我有这个使用核心数据的应用程序和一个NSArrayController来管理表中的一些对象。我有下面的代码来获取目录上的一些对象。我的问题是关于下面标有" Handle Files"的部分。我使用url创建一个新的Video对象,我使用我编写的自定义函数复制元数据属性。该对象现在插入managedObjectContext中。我的问题是,因为我的NSArrayController绑定到我的managedObjectContext,为什么我还必须[self addObject:newVideo]让我的表上显示对象?有没有办法强制数组控制器从managedObjectContext中提取对象而不必手动添加它?每次添加或删除对象时都必须更新这两件事情。
for (NSURL *url in _dirEnumerator) {
NSNumber *_isDirectory = nil;
[url getResourceValue:&_isDirectory forKey:NSURLIsDirectoryKey error:NULL];
if (![_isDirectory boolValue]) {
if (([_mediaTypes containsObject:[[url pathExtension]uppercaseString]])) {
// Handle the files
Video *newVideo = [NSEntityDescription insertNewObjectForEntityForName:@"Video" inManagedObjectContext:_managedObjectContext];
[newVideo copyAttributesFrom:url];
[self addObject:newVideo];
NSLog(@"Inserting video: %@",[newVideo valueForKey:@"name"]);
}
}
}
答案 0 :(得分:0)
好吧,我的绑定都错了,阵列控制器没有正确地送我的桌子。您不能潜入阵列控制器后面的对象,如果您实现阵列控制器,您必须让他完成他的工作,包括添加和删除对象。当事情发生变化时,他将负责让tableview知道。