【问题标题】:Adding managedObjectContext objects with an NSArrayController使用 NSArrayController 添加 managedObjectContext 对象
【发布时间】:2014-11-05 22:17:11
【问题描述】:

我有这个应用程序,它使用核心数据和 NSArrayController 来管理表中的一些对象。我有下面的代码来获取目录上的一些对象。我的问题是关于下面标有“处理文件”的部分。我使用 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"]);
        }
    }
}

【问题讨论】:

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


    【解决方案1】:

    好吧,我的绑定都错了,因为阵列控制器没有正确地喂食我的桌子。你不能在数组控制器后面偷偷对象,如果你实现了数组控制器,你必须让他做他的工作,包括添加和删除对象。当事情发生变化时,他会负责让 tableview 知道。

    【讨论】:

      猜你喜欢
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多