【发布时间】:2014-05-27 10:02:07
【问题描述】:
我知道当你完成一个实体的属性重置后,系统会自动进行更新工作。但是,我发现有时它不会及时更新。在我的相册应用中,当我
完成相册名称重置,然后进入该相册,该相册的照片如预期显示。但是,当我点击一张照片(它也是数据库中的 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;
}
}
提前致谢!
【问题讨论】:
-
我以前看过,和我的问题不一样。在我的测试中,我发现在重置一个实体的属性后,该实体被及时更新了,但是与被更新实体有关系的那些实体并没有及时更新。
标签: ios objective-c core-data ios7 nsmanagedobject