使用NSArrayController添加managedObjectContext对象

时间:2014-11-05 22:17:12

标签: objective-c cocoa core-data nsmanagedobjectcontext osx-yosemite

我有这个使用核心数据的应用程序和一个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"]);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

好吧,我的绑定都错了,阵列控制器没有正确地送我的桌子。您不能潜入阵列控制器后面的对象,如果您实现阵列控制器,您必须让他完成他的工作,包括添加和删除对象。当事情发生变化时,他将负责让tableview知道。