在我的应用程序中,我有2个详细视图控制器:
在产品属性更新视图控制器一切都很好没有错。
在产品名称更新视图控制器中,但保存上下文不会产生任何错误。我看到根视图控制器中的产品名称发生了变化,但是当我重新打开我的应用程序时,产品名称会显示旧名称。所以它不会持久存在。
根据我的updateProduct
方法,我的问题是什么:
-(void)updateProduct:(id)sender
{
AppDelegate *delegate = [UIApplication sharedApplication].delegate;
NSManagedObjectContext *context = [delegate managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Products" inManagedObjectContext:context]];
NSError *error = nil;
NSPredicate *predicateID =[NSPredicate predicateWithFormat:@"productID==%d",[secim intValue]];
[request setPredicate:predicateID];
NSArray *myobj=[context executeFetchRequest:request error:&error];
NSManagedObject *prod1=[myobj objectAtIndex:0];
[prod1 setValue:textProduct1.text forKey:@"productName"];
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
[self.navigationController popToRootViewControllerAnimated:YES];
NSLog(@"Data saved");
}
答案 0 :(得分:0)
如果调用了updateProduct
方法,请检查断点。我怀疑它不是。
根据其他讨论,请确保
nil
nil
您可以在调试器中使用断点或使用日志语句执行此操作。
答案 1 :(得分:0)
除 @Mundi 之外,您还在执行以下操作
NSArray *myobj = [context executeFetchRequest:request error:&error];
NSManagedObject *prod1 = [myobj objectAtIndex:0];
但您不会检查error
,如果myobj
包含元素,则不会。
总是检查错误,但有可能有错误。