iphone - 使用 setValue 且数据已存在时如何在 Core Data 中正确设置关系

标签 iphone objective-c core-data

假设我有两个对象:文章类别,两者之间存在多对多关系。为了这个示例,所有相关类别都已添加到数据存储中。在遍历包含文章编辑的数据时,需要保存类别关系信息。

我计划在 Article 类中使用 -setValue 方法来设置这样的关系:

- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
    if([key isEqualToString:@"categories"]){
        NSLog(@"trying to set categories...");
    }
}

问题是 value 不是 Category,它只是一个包含类别标题的字符串(或字符串数​​组)。我当然可以在这个方法中为每个类别进行查找并分配它,但是在一次处理一大堆文章时这似乎效率低下。另一种选择是填充所有可能类别的数组并进行过滤,但我的问题是该数组存储在哪里?它应该是 Article 上的类方法吗?有没有办法将附加数据传递给 -setValue 方法?有没有其他更好的选择来设置我没有想到的关系?

感谢您的帮助。

最佳答案

为什么要实现 setValue:forKey:?您应该在这两个对象之间建立多对多关系并直接处理该关系。在这里看来,您正在以艰难的方式做到这一点。

这段代码的最终目标是什么?

更新

如果我没理解错的话,你有一个 JSON 数据 block ,你想把它变成一个对象图,它与那个对象图匹配正确吗?如果是这样,请查看我在另一个答案中编写的代码:

JSON and Core Data on the iPhone

在那个答案中,我展示了如何递归地构造一个 NSManagedObject 图和从一个 JSON 结构解构它。这比您现在走的路要容易得多。

关于iphone - 使用 setValue 且数据已存在时如何在 Core Data 中正确设置关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3003092/

相关文章:

iphone - 搜索大量数据来自iPhone中的Web服务

ios - UIKeyboardFrameBeginUserInfoKey & UIKeyboardFrameEndUserInfoKey

iphone - (iphone) "Reject Binary"按钮在哪里?

objective-c - .delegate=self 是什么意思?

objective-c - 您可以为plist文件定义自定义枚举类型吗?

iphone - 编辑核心数据关系数据

iphone - ExecuteFetchRequest 间歇性地抛出具有相同参数的异常。 "not key value coding-compliant for the key"

iphone - iPhone 应用程序中的 super /子类和 View

ios - 通过应用程序加载器进行大量应用内购买

ios - 仅为绘制的特定区域边界获取 UIImage - PaintView