0

我在使用 Core Data 时遇到问题。我有一个将数据链接到 NSTableView 的数组控制器设置。

我有一个每隔几秒钟运行一次代码的函数,并在其中显示文件列表

NSEntityDescription *entity = [NSEntityDescription entityForName:@"File"
                                          inManagedObjectContext:[self managedObjectContext]];

[request setEntity:entity];
NSError *error = nil;

NSArray *fetchedObjects =[_managedObjectContext executeFetchRequest:request
                                                              error:&error];

for (NSManagedObject *objectt in fetchedObjects) {
    NSLog(@"Object Name: %@", [objectt valueForKey:@"filename"]);
}
NSManagedObject *object = [fetchedObjects objectAtIndex:index];

NSLog(@"Filename: %@, Index: %ld", [object valueForKey:@"filename"], index);
NSString *imageName = [object valueForKey:@"imageName"];
NSImage *image = [object valueForKey:@"taggedImage"];

第一次运行此代码时,列表与表列匹配。当它再次运行时,从数组控制器获取的内容发生了变化,但 tableview 没有。所以它不再同步。

表和数组的同一索引处的值不同。

4

1 回答 1

0

您是否手动检查NSArrayController过它是否同步?这会将问题缩小到NSArrayController配置错误或 NSTableView 配置错误。您的声明声称您正在查看,NSArrayController但是当您使用 fetched 这个词时,我担心您会混淆这些对象。

此外,数据是处于已保存状态还是仍处于未保存状态?该问题也会影响NSArrayController和的显示NSTableView

于 2012-11-26T15:54:08.650 回答