Iphone 在新数据库上的多个MOC之间合并更改时出现问题

Iphone 在新数据库上的多个MOC之间合并更改时出现问题,iphone,ios,core-data,Iphone,Ios,Core Data,我有一个IOS应用程序,它使用一个核心数据库来存储 缩略图照片图像及其用户选择的分级。 为此,我使用多个托管对象上下文 问题是,当应用程序安装并 首次发布(从而创建一个新的 数据库)主主主运行中心看不到来自 正在更改照片评级的临时主运行中心。 但在随后的应用程序发布时(即数据库 (已经存在),一切都很好 时间 此外,在新的应用程序发布时,即使 我知道,收视率不会显示在主viewcontroller中 它们正在保存到磁盘,因为在应用程序重新启动时 我看到了用户输入的评分 主MOC是一个列表视图控制

我有一个IOS应用程序,它使用一个核心数据库来存储 缩略图照片图像及其用户选择的分级。 为此,我使用多个托管对象上下文

问题是,当应用程序安装并 首次发布(从而创建一个新的 数据库)主主主运行中心看不到来自 正在更改照片评级的临时主运行中心。 但在随后的应用程序发布时(即数据库 (已经存在),一切都很好 时间

此外,在新的应用程序发布时,即使 我知道,收视率不会显示在主viewcontroller中 它们正在保存到磁盘,因为在应用程序重新启动时 我看到了用户输入的评分

主MOC是一个列表视图控制器,显示 照片。当用户从列表中选择照片时,它 启动另一个视图控制器(带有临时MOC 绑定到用户选择的同一个持久存储) 照片评级。但在新发布的应用程序中,这张照片 分级设置永远不会传播回列表视图控制器

我包含了一些代码。如果您有任何见解,我将不胜感激

在主listview控制器中创建数据库 在主listView控制器中加载视图 在主设备的委托方法中设置临时主运行中心 从辅助视图控制器调用的listview控制器 方法合并更改 在上面的contextSaved方法中,通知 确实包含用户为照片选择的评级。
但它不会反映在主listview控制器中。

开始使用嵌套上下文。它只是在每一个可能的层面上更容易同步。在这一点上,专家们还没有更新核心数据编程指南来很好地涵盖它

if ([fileManager fileExistsAtPath:[urlForPhotosDb path]]) {

if (photosDB.documentState == UIDocumentStateClosed) {
   [photosDB openWithCompletionHandler:^(BOOL success) {

        ......(additional code here).........

}];     
}
} else {
[photosDB saveToURL:urlForPhotosDb forSaveOperation:UIDocumentSaveForCreating
completionHandler:^(BOOL success) {
[PhotosDatabase populatePhotosDb];

......(additional code here).........
];
}

return photosDB;
}
(void)viewDidLoad
{
[super viewDidLoad];


[PhotosDatabase getPhotosDbForOpenBlock:^(UIManagedDocument  *doc) {
self.psc = [doc.managedObjectContext persistentStoreCoordinator];
[self setupFetchedResultsController:doc];
[[NSNotificationCenter defaultCenter] addObserver:self
                                      selector:@selector(contextSaved:)
                                      name:NSManagedObjectContextDidSaveNotification
                                      object:nil];
}];
}
-(void)didSelectPhotoRating:(NSDictionary *)photoInfo Rating:(NSNumber *)rating
{
NSManagedObjectContext *newContext = [[NSManagedObjectContext alloc] init];
[newContext setPersistentStoreCoordinator:self.psc];
Photos *photo = [Photos findPhoto:photoInfo
           inManagedObjectContext:newContext];
if (photo) {
photo.rating = rating;
NSError *error;
[newContext save:&error];
}

}
-(void)contextSaved:(NSNotification *)notification
{
if ([notification object] != self.document.managedObjectContext) {
    [self.document.managedObjectContext

mergeChangesFromContextDidSaveNotification:notification];
[self performFetch];
[self.tableView reloadData];
}
}