如何在Core Data中分配相关对象?

时间:2011-10-21 21:50:38

标签: iphone objective-c ios core-data

在我的iPhone项目中,我有一个包含2个对象的数据模型:Profile和Contact。它们彼此相关,其中1个配置文件具有多个联系人。这是我不确定的:

将联系人添加到数据库时,将配置文件分配给联系人的正确方法是什么?

我知道如何将联系人添加到数据库,但我需要知道添加配置文件的正确方法。

self.moc = [((AppDelegate *)[[UIApplication sharedApplication] delegate]) managedObjectContext];
Contact *contact = [NSEntityDescription insertNewObjectForEntityForName:@"Contact" inManagedObjectContext:self.moc];
contact.recordID = recID;
contact.profile = ????????
NSError *err = nil;
[self.moc save:&err];

我是否需要先获取个人资料?我是否使用单独的managedObjectContext或同一个?

我有个人资料的第一个名字,我知道我可以用它来获取它:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
self.moc = [appDelegate managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(firstName like %@)", appDelegate.currentProfile];
Profile *fetchedData = (Profile *)[NSEntityDescription entityForName:@"Profile" inManagedObjectContext:self.moc];

我想我可以这样做,但如果有人能给我一个最佳实践的代码块,那就太好了。谢谢!

1 个答案:

答案 0 :(得分:1)

您首先获取配置文件,您可以使用相同的MOC。然后将其分配给联系人的个人资料属性。

[NSEntityDescription entityForName:@"Profile" inManagedObjectContext:self.moc]虽然没有返回Profile对象。它返回一个实体描述。

+ (NSEntityDescription *)entityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context

您需要在MOC上使用获取请求。结帐:

http://cocoawithlove.com/2008/03/core-data-one-line-fetch.html