Как прочитать конфликтующий UIDocument из unresolvedConflictVersionsOfItemAtURL:

Когда конфликт возникает в UIDocument, я могу получить все конфликтующие версии, вызвав unresolvedConflictVersionsOfItemAtURL: на NSFileVersion но как я могу получить UIDocument (снимок) этих версий?

Я хочу зациклить все версии и объединить это сам.

Обновлено Я сталкивался с этим Как я могу объединить конфликтующие UIDocument в iCloud? и попытаться сделать это таким образом, но я не считаю его правильным, потому что открытый UIDocument является асинхронной операцией. Как правильно это сделать?

    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 ;
                }
            }];
        }
    }];

1 ответ

Вместо вызова openWithCompletionHandler вы хотите сделать что-то вроде:

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

Поэтому поменяйте местами openWithCompletionHandler с readFromURL, и вы сможете сразу получить доступ к своему документу, чтобы разрешить конфликт.

Другие вопросы по тегам