Ios 如何以通用方式设置多个关系属性

Ios 如何以通用方式设置多个关系属性,ios,core-data,Ios,Core Data,我知道我能做到: [managedObject setValue:val forKey:@"key"]; 但是如何将对象添加到多关系数据集?我有种感觉我不能只是: NSOrderedSet * set = [managedObject objectForKey:@"therelationship"]; [set addObject:relationshipObj]; [managedObject setValue:set forKey:@"therelationship"]; 或者我可以吗?

我知道我能做到:

[managedObject setValue:val forKey:@"key"];
但是如何将对象添加到多关系数据集?我有种感觉我不能只是:

NSOrderedSet * set = [managedObject objectForKey:@"therelationship"];
[set addObject:relationshipObj];
[managedObject setValue:set forKey:@"therelationship"];

或者我可以吗?

您可以,但自从ios4.0以来,他们一直试图在使用KVO的NSManagedObject上设置值。Apple希望您创建一个NSManagedObject子类。你认为实现会变成这样

[[MyManagedObject theRelationshipSet] addObject:newRelationshipObject];

查看wwdc 2010视频集中的“mastering coredata”。

我建议您在NSManagedObject子类上实现这样一种方便的方法:

- (NSMutableOrderedSet *)mutableAuthors;
{
    return [self mutableOrderedSetValueForKey:@"authors"];
}
这是你的电话

NSMutableOrderedSet *authors = [mo mutableAuthors];
[authors insertObject:a atIndex:4];
或者干脆

[mo.mutableAuthors insertObject:a atIndex:4]

他不想使用KVO(键值观察),他想使用KVC(键值编码),这是两件完全不同的事情。实际上,我刚刚完成了一种通用方法,根据plist的名称将plist数据加载到目标核心数据实体中。为此,我必须以通用的方式设置(并查找要设置的关系)。谢谢你的回答。