UIDocument loadFromContents:在另一台设备上更改文档后并不总是被调用

时间:2014-02-17 11:51:59

标签: ios objective-c icloud uidocument

我有一个自定义UIDocument子类,并实现了loadFromContents:contentsForType:

要检测到其他设备上的文档已被更改,我按照Apple documentation中的建议添加了loadFromContents:的代理:

- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError {
    // load from disk […]

    if ([_delegate respondsToSelector:@selector(noteDocumentContentsUpdated:)]) {
        [_delegate noteDocumentContentsUpdated:self];
    }
    return YES;
}

我的问题是,当我在其他设备上更改文档时,我会收到文档状态更改通知(edit_disabled后跟normal),但内容重新加载并且未调用loadFromContents:

内容肯定已在磁盘上更新。当我通过UI手动重新打开文档时,我立即看到最新的更改。

其他时候它可以工作,loadFromContents:会自动调用。我无法弄清楚为什么它有时不起作用。有没有人见过这个问题?

1 个答案:

答案 0 :(得分:0)

您可能希望在通知和/或重新加载文档再次处于正常状态后手动执行文档版本解析。

查看以下UIDocument方法,只需重新加载文档内容:

- (void)revertToContentsOfURL:(NSURL *)url completionHandler:(void (^)(BOOL success))completionHandler;