我知道当您完成重置实体的属性后,系统将自动执行更新工作。但是,我发现有时它不会及时更新。在我的相册应用程序中,当我 完成重置专辑名称,然后输入此专辑,此专辑的照片将按预期显示。但是,当我点击一张照片(也是数据库中的NSManagedObject,其关系称为相册)进入另一个ViewController以显示此照片时,该应用程序崩溃。但是如果我在完成更改专辑名称后退出应用程序(更新代码正常工作),然后再次进入应用程序,一切运行良好,不会发生崩溃。所以我认为崩溃的原因是系统无法及时更新照片和相册的关系(更准确地说,连接到特定照片的相册的名称没有及时更新)。 所以我想知道是否有一些手动更新数据库的方法? 这是我的更新代码:
+ (void)changeAlbumNameWithName: (NSString *)newName withOldName: (NSString *)oldAlbumName inManagedObjectContext: (NSManagedObjectContext *)context
{
Album *album;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Album"];
request.sortDescriptors = nil;
request.predicate = [NSPredicate predicateWithFormat:@"name = %@", oldAlbumName];
NSError *error;
NSArray *matches = [context executeFetchRequest:request error:&error];
if ([matches count] == 1) {
album = matches[0];
album.name = newName;
}
}
提前致谢!
答案 0 :(得分:4)
您需要调用NSManagedObjectContext
上的save:
方法来提交您所做的更改。
答案 1 :(得分:0)
我找到了解决这个问题的方法。 更新专辑名称后,我调用“saveToURL:forSaveOperation:completionHandler:”,这是UIManagedDocument的一种方法。使用此方法,可以正确更新Core Data数据库。