很难掌握核心数据的工作方式,我希望我能在这里获得一些非常基本的帮助。
我有两个实体:
Profiles<-->>Events
我已成功找到了如何通过谓词提取在表视图中添加配置文件,查看配置文件以及查看配置文件的事件。
现在,我迷失了。假设我想更新Event实体中的事件。在更新Event实体之前,是否必须使用谓词进行提取以创建“个人档案”对象?或者我可以只更新Event实体并以某种方式通过关系告诉它与哪个Profile相关联?
这是我点击日志卡塞的地方:
// add new event
//NSLog(@"Adding New Event");
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Events"];
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"ANY profile.profilename=[cd] %@",[self profilename]];
[fetchRequest setPredicate:predicate];
self.events = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
//insert event info
NSManagedObject *eventInfo = [NSEntityDescription insertNewObjectForEntityForName:@"Events" inManagedObjectContext:self.managedObjectContext];
///////// THIS IS WHERE I NEED HELP
}
// save the context
NSError *error = nil;
if (![managedObjectContext save:&error]){
NSLog(@"Error! %@",error);
}
我准备创建一个平面文件并使用它!这让我疯了!
编辑 - 以下更改的代码 * ** * ** * ** * * * * ** * ** * ** * *
// add new event
//NSLog(@"Adding New Event");
Events *newEvent = (Events *)[NSEntityDescription insertNewObjectForEntityForName:@"Events" inManagedObjectContext:managedObjectContext];
newEvent.eventdesc=self.eventDescTextField.text;
NSString *wkst = eventDescTextField.text;
NSNumber *wk = [NSNumber numberWithInteger: [wkst integerValue]];
newEvent.weeksout = wk;
所以现在我知道我需要告诉Event实体使用当前的配置文件..我如何访问这个关系?
答案 0 :(得分:1)
查看您提供的代码,我认为您对Core Data存在误解。
看起来您正在尝试获取与个人资料相关的所有事件。您无需创建ond为此执行获取请求。核心数据是一个对象图。这意味着如果您在托管对象上下文中有对象,则通过它的关系获取其相关对象,您不需要运行获取请求。