Ошибка (LibrarianErrorDomain error 2) при отключении синхронизации iCloud для файла UIDocument с помощью setUbiquitous

Я сталкиваюсь с ошибкой, когда пытаюсь отключить синхронизацию iCloud для файла UIDocument. Интересно, сталкивался ли кто-нибудь еще с этим. Вот сценарий:

Я создаю файл UIDocument локально в песочнице приложения, а затем делаю следующий вызов, чтобы начать синхронизацию файла с iCloud:

[[NSFileManager defaultManager] setUbiquitous:YES itemAtURL:localPathURL destinationURL:cloudPathURL error:&error];

Все идет гладко.

Теперь я хочу остановить синхронизацию iCloud для этого файла.

Сначала я удостоверяюсь, что файл был хотя бы синхронизирован с iCloud, вызвав следующее:

- (BOOL) isDataFileSyncedWithCloud
{
    if (![self isICloudSupported] || ![self isUsingICloudForFiles])
        return NO;

    NSURL* file = [self getFileURLToCloudDatafile];
    NSNumber*  isInCloudNum = nil;

    if ([file getResourceValue:&isInCloudNum forKey:NSURLIsUbiquitousItemKey error:nil])
    {
        // If the item is in iCloud, see if it is downloaded and uploaded.
        if ([isInCloudNum boolValue])
        {
            NSNumber*  isDownloadedNum = nil;
            if ([file getResourceValue:&isDownloadedNum forKey:NSURLUbiquitousItemIsDownloadedKey error:nil])
            {
                NSNumber* isUploadedNum = nil;
                if ([file getResourceValue:&isUploadedNum forKey:NSURLUbiquitousItemIsUploadedKey error:nil])
                {                    
                    return ([isDownloadedNum boolValue] && [isUploadedNum boolValue]);
                }
            }
        }
    }

    return NO;
}

Приведенное выше возвращает YES, указывая на то, что файл был синхронизирован (или я так думал...)

Итак, теперь я делаю вызов ниже, чтобы остановить синхронизацию iCloud для этого файла:

[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:localPathURL destinationURL:cloudPathURL error:&error];

и я получаю следующую ошибку: «Операция не может быть завершена. (LibrarianErrorDomain error 2 — Невозможно отключить синхронизацию для несинхронизированного элемента.)»

Любая идея, почему эта ошибка возникает и как я могу избавиться от нее? Я бы подумал, что мой файл полностью синхронизирован...

Заранее спасибо!


person montuno    schedule 17.12.2011    source источник


Ответы (1)


Я понял. Чтобы отключить синхронизацию iCloud, я случайно позвонил:

[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:localPathURL destinationURL:cloudPathURL error:&error];

вместо

[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:cloudPathURL destinationURL:localPathURL error:&error];
person montuno    schedule 31.12.2011