核心数据和多个实体

时间:2013-10-21 16:42:42

标签: ios core-data

很难掌握核心数据的工作方式,我希望我能在这里获得一些非常基本的帮助。

我有两个实体:

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实体使用当前的配置文件..我如何访问这个关系?

1 个答案:

答案 0 :(得分:1)

查看您提供的代码,我认为您对Core Data存在误解。

看起来您正在尝试获取与个人资料相关的所有事件。您无需创建ond为此执行获取请求。核心数据是一个对象图。这意味着如果您在托管对象上下文中有对象,则通过它的关系获取其相关对象,您不需要运行获取请求。