如何更新 UIDocument 数据
Posted
技术标签:
【中文标题】如何更新 UIDocument 数据【英文标题】:How to update UIDocument data 【发布时间】:2013-01-09 17:55:52 【问题描述】:我有一个本地 UIDocument,其中包含将最近查看文章的 NSArray 保存到单个文件中。
我的应用程序是基于 UITabbarController 的,在一个选项卡中有从互联网获取的文章列表,另一个是带有此 UIDocument 支持的 UITableView。一切都加载得很好,问题是 UIDocument 一旦打开就没有更新。当我使用核心数据和 NSFetchedResultController 时,它可以与controllerWillChangeContent
无缝协作。 UIDocument 有没有类似的?
【问题讨论】:
【参考方案1】:UIDocument 为此提供了updateChangeCount
。在您进行更改后将其发送到您的 UIDocument(子类),或者让 UIDocument 监听从视图控制器发送的通知,并适当设置选择器。
例如在你的 UIDocument 类的初始化中:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(somethingChanged) name:@"DocumentDidChangeNotification" object:nil];
也在 UIDocument 中:
- (void)somethingChanged
[self updateChangeCount:UIDocumentChangeDone];
在视图控制器中,当内容改变时,做:
[[NSNotificationCenter defaultCenter] postNotificationName:@"DocumentDidChangeNotification" object:nil];
【讨论】:
我认为 updateChangeCount 是用于自动保存功能,这并不能回答如何在打开的两个 UIDocument 之间同步状态。 为什么要两个 UIDocuments?您的问题是关于 one UIDocument。自动保存有什么问题?正如here 所解释的那样,这就是这样做的方法 我的意思是一个自定义 UIDocument 类,但是两个实例打开同一个文档(一个打开用于保存最近查看文章,一个打开用于在第二个选项卡中查看它们)。将新文章添加到列表后,第二个选项卡中的 UIDocument 实例不会更新以反映此更改。 这不是一个好主意。一份文件只能由一个实例管理。您不应拥有该文档的第二个实例,而应在两个视图控制器中使用同一个实例。 有什么建议吗?因为它总是在 Tab 2 打开,这是最近查看文章的 UITableView。当用户在 Tab 1 中浏览文章时,我必须更新文档以将新文章添加到列表中。以上是关于如何更新 UIDocument 数据的主要内容,如果未能解决你的问题,请参考以下文章