我正在处理一个同步过程,其中使用时间戳从带有 RestKit 的服务器加载最新更改的对象,并使用基于 MOC 理念的 Core Data 保存所有更改。
顺序
1) 启动同步进程并将更改保存到 Core Data [AppDelegate]
2) 进程完成后从 Core Data 重新获取数据并重新加载数据 [ContactTableView]
3) 获取完成时重新加载输入视图 [ContactDetailView]
4) 重新加载表视图放置在 ContactDetailView [ContactDetailTV] 内的 ViewContainer 中
在视图之间传递数据
ContactTableView (passing object when user selects row)
--» ContactDetailView (passing object to subView in viewContainer)
--» ContactDetailTV (displaying data of object in a tableView)
有效的问题
当
我在 ContactTableView 中时,表格视图会重新加载新获取的数据,一切都很好。
这不起作用
当我在 ContactDetailTV 中时(因为当我查看它时数据可能会发生变化),即使在调用 [self.tableView reloadData] 之后,视图也会在 ContactDetailTV 中显示旧数据。
问题
我做错了什么或缺少什么以使重新加载按预期工作?
代码
应用委托
- (void)startSyncProcess:(NSInteger)operationCode
{
// Init helper
syncCount = 0;
syncProcess = 0;
switch (operationCode)
{
default:
// (1) Request deleted companys from server
[self requestDeletedCompanysFromServer];
break;
case 0:
// (2) Request deleted contacts from server
[self requestDeletedContactsFromServer];
break;
case 1:
// (2) Request edited companys from server
[self requestEditedCompanysFromServer];
break;
case 2:
// (2) Request edited contacts from server
[self requestEditedContactsFromServer];
break;
case 3:
// Reload data views
[self saveCurrentSyncTime];
[[NSNotificationCenter defaultCenter] postNotificationName:@"updateTableViewAfterSave" object:self];
break;
}
}
联系人表视图
- (void)syncContextDidSave:(NSNotification*)saveNotification
{
// Handling the "updateTableViewAfterSave"-notification by refetching the data with Core Data
NSError *error;
if (![[self fetchedResultsController] performFetch:&error])
NSLog(@"[ERROR] Saving failed with error: %@", [error userInfo]);
[[NSNotificationCenter defaultCenter] postNotificationName:@"updateSubViewAfterSave" object:nil];
}
联系DetailTV
- (void)updateSubViewAfterSave:(NSNotification *)saveNotification
{
// Handling the "updateSubViewAfterSave"-notification by updating the table view that displays the data without using a fetchedResultsController
[self.tableView reloadData];
}