2013-10-21 39 views
1

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

我有两个实体:

Profiles<-->>Events 

我已经成功地想出如何在表视图通过谓词取添加配置文件,查看配置文件中的表视图,查看事件的轮廓。

现在,这里是我迷失的地方。假设我想更新Event实体中的事件。在更新Event实体之前,是否必须使用谓词进行提取以创建Profiles对象?或者我可以只更新Event实体并以某种方式通过关系告诉它与哪个配置文件关联?

这里就是我击中了日志果酱:

// 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

你想添加一个特定的配置文件? – Bot

+0

你说你的问题是关于更新事件。我认为它已经存在。在这种情况下,它已经从创建事件时建立了配置文件关系,因此您无法将事件与配置文件关联。 – Abizern

+0

我想出如何保存对现有条目的更改,但添加新条目是我绊倒的地方 – Mark

回答

1

看着你提供的代码,我认为你对核心数据有一种误解。

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

+0

谢谢,是的......这正是我遇到的问题。我似乎无法摆脱SQL和核心数据的困扰。 – Mark

+0

您应该能够(取决于您创建模型的方式)只写'newEvent.profile = <您要添加为相关配置文件的任何配置文件>;' – Abizern