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数据加载到目标核心数据实体中。为此,我必须以通用的方式设置(并查找要设置的关系)。谢谢你的回答。