2

我有一个上下文,我想在上下文中的现有对象(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]];

在设置事件时,应用程序崩溃了..有人知道吗?谢谢!

4

1 回答 1

-1

从错误消息来看,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第三行中的局部变量。

于 2013-04-24T17:02:34.540 回答