我有一个上下文,我想在上下文中创建一个关系(Veranstaltung)和一个新的(Ticket)。
NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; //constructor get the Context from the appDelegate
Ticket *ticket = [NSEntityDescription insertNewObjectForEntityForName:@"Ticket" inManagedObjectContext:managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Veranstaltung" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"vID == %@", veranstaltung.vID];
[fetchRequest setPredicate:predicate];
NSError *error = nil;
NSArray *fetchedRequests = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
NSLog(@"FetchedRequests count: %d", fetchedRequests.count);
if(fetchedRequests !=nil)
[ticket setEvent:fetchedRequests[0]];
在设置事件时,应用程序崩溃.. 有人有个主意吗?谢谢!
答案 0 :(得分:0)
从错误消息中,Core Data似乎认为Ticket
和Veranstaltung
处于不同的上下文中。查看前几行代码......
[self managedObjectContext]; //constructor get the Context from the appDelegate
Ticket *ticket = [NSEntityDescription insertNewObjectForEntityForName:@"Ticket" inManagedObjectContext:managedObjectContext];
看起来你在其中一行上留下了一些东西,结果是第二行的managedObjectContext
不是你想的。你可能意味着:
NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; //constructor get the Context from the appDelegate
或者:
Ticket *ticket = [NSEntityDescription insertNewObjectForEntityForName:@"Ticket" inManagedObjectContext:[self managedObjectContext]];
实际上,第一行没有做任何有用的事情,因为结果被抛弃了。我建议将第二行放在第三行之后,并在第三行使用context
局部变量。