Ios 如何从UnsolvedConflictVersionsofItemAttribute中读取冲突的UIDocument:

Ios 如何从UnsolvedConflictVersionsofItemAttribute中读取冲突的UIDocument:,ios,merge,icloud,conflict,uidocument,Ios,Merge,Icloud,Conflict,Uidocument,当UIDocument中发生冲突时,我可以通过调用NSFileVersion上的unsolvedconflictVersionsofItemAttribute:来获取所有冲突版本,但我如何获取该版本的UIDocument(快照) 我想循环所有版本并自己合并 已更新 我曾经遇到过这种情况,并尝试以这种方式进行操作,但我认为它不正确,因为OpenUIDocument是异步操作。正确的方法是什么 NSFileVersion *currentVersion = [NSFileVersion cu

当UIDocument中发生冲突时,我可以通过调用
NSFileVersion
上的
unsolvedconflictVersionsofItemAttribute:
来获取所有冲突版本,但我如何获取该版本的UIDocument(快照)

我想循环所有版本并自己合并

已更新 我曾经遇到过这种情况,并尝试以这种方式进行操作,但我认为它不正确,因为OpenUIDocument是异步操作。正确的方法是什么

    NSFileVersion *currentVersion = [NSFileVersion currentVersionOfItemAtURL:senderDocument.fileURL];
    NSArray *conflictedVersions = [NSFileVersion unresolvedConflictVersionsOfItemAtURL:senderDocument.fileURL];
    RecentDocument *currentDocument = [[RecentDocument alloc] initWithFileURL:currentVersion.URL];
    [currentDocument openWithCompletionHandler:^(BOOL success) {
        if (!success) {
            NSLog(@"Failed to open");
            return ;
        }
        for (NSFileVersion *version in conflictedVersions) {
            RecentDocument *conflictedDocument = [[RecentDocument alloc] initWithFileURL:version.URL];
            [conflictedDocument openWithCompletionHandler:^(BOOL success) {
                if (!success) {
                    NSLog(@"Failed to open");
                    return ;
                }
            }];
        }
    }];

您不需要调用openWithCompletionHandler,而是希望按照以下方式执行操作:

RecentDocument * thisDoc = [[RecentDocument alloc] initWithFileURL:url];
NSError* innerReadError;
[thisDoc readFromURL:url error:&innerReadError];

因此,将openWithCompletionHandler与readFromURL交换,您应该能够立即访问文档以解决冲突

UIDocument
异步打开与此有什么关系
NSFileVersion
是查找冲突版本的方式,
UIDocument
是打开冲突版本的方式(如果需要)。如果您想了解更多详细信息,请参阅示例代码中的.replicate,我得到了所有NSFileVersion冲突,但要读取其内容(要自己合并数据),我必须打开它,这是一种异步操作。在链接中,它将教您如何手动显示冲突,而这并不是问题的答案。