Я сталкиваюсь с ошибкой, когда пытаюсь отключить синхронизацию 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 — Невозможно отключить синхронизацию для несинхронизированного элемента.)»
Любая идея, почему эта ошибка возникает и как я могу избавиться от нее? Я бы подумал, что мой файл полностью синхронизирован...
Заранее спасибо!