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