Я пишу приложение, которое синхронизирует данные между различными устройствами с использованием документов iCloud. Проблема, с которой я столкнулась, заключается в том, что после сохранения файла в iCloud с одного устройства (Оба устройства в этом случае являются симуляторами, зарегистрированными в той же учетной записи iCloud), файл, похоже, не существует с другого устройства (или требуется больше чем 30-40 минут, чтобы он «прибыл», в то время как оба тренажера включены).Заставить iOS загрузить файл iCloud
Я думал, может быть, есть API для принудительной синхронизации файлов, но, похоже, нет такого API (на NSFileManager
).
Код я использовал для записи файла (я загрузил только соответствующий код):
currVersionDir = NSFileManager.defaultManager().URLForUbiquityContainerIdentifier(nil)?.URLByAppendingPathComponent(DBVersionURL, isDirectory: false);
if (!NSFileManager.defaultManager().fileExistsAtPath((currVersionDir?.path)!))
{
NSFileManager.defaultManager().createFileAtPath((currVersionDir?.path!)!, contents: nil, attributes: nil);
}
let coord = NSFileCoordinator();
let err : NSErrorPointer = NSErrorPointer();
coord.coordinateWritingItemAtURL(currVersionDir!, options: .ForMerging, error: err, byAccessor: {(url : NSURL) in
do {
try dbVersion.writeToFile(currVersionDir!.path!, atomically: true, encoding: NSUTF8StringEncoding);
} catch { retVal = false; }
});
код, который используется для чтения файла:
let coord = NSFileCoordinator();
let err : NSErrorPointer = NSErrorPointer();
do{
if (currDir != nil && isOnIcloud){
try NSFileManager.defaultManager().startDownloadingUbiquitousItemAtURL(currDir!);
}
} catch { }
coord.coordinateReadingItemAtURL(currVersionDir!, options: .WithoutChanges, error: err, byAccessor: {(url : NSURL) in
do {
currDbVersion = try NSString(contentsOfFile: currVersionDir!.path!, encoding: NSUTF8StringEncoding) as String;
} catch { }
});
Использование координаторе из-за инструкций Apple, даже без этого не работает.
Когда этот код работает на определенном устройстве, он работает - файл написан и может быть прочитан. Когда этот код работает на одном устройстве, устройство отключается через некоторое время, а другое устройство запускает приложение позже - почти всегда файл недоступен с других устройств.
Есть ли какая-либо команда, которую я могу выполнить, которая заставит файл загружаться? Вы знаете, что не позволяет загрузить его немедленно?
Я новичок в iCloud, и, похоже, это неправильно, хотя я уверен, что это то, что я делаю неправильно. Спасибо!