Я не могу найти надежную документацию, которая объясняет правильную процедуру удаления UIManagedDocument и, в частности, тот, где параметры iCloud включены.Каков правильный способ удаления UIManagedDocument?
Я понимаю, что эта опция удалит файл в этом файлеURL. И это выглядит нормально, если iCloud не используется.
[[NSFileManager defaultManager] removeItemAtURL:fileURL error:&error];
Если ICloud используется, то CoreData создает файлы повсюду, в том числе и в/Document/CoreDataUbiquitySupport и в папке ICloud/CoreData. Поэтому в этом случае мне нужно позвонить removeUbiquitousContentAndPersistentStoreAtURL
для каждого магазина в UIManagedDocument
до звонка [NSFileManager removeItemAtURL]
. Если это так документировано?
[NSPersistentStoreCoordinator removeUbiquitousContentAndPersistentStoreAtURL:storeURL
options:@{NSPersistentStoreUbiquitousContentNameKey:fileName,
NSMigratePersistentStoresAutomaticallyOption:@YES,
NSInferMappingModelAutomaticallyOption:@YES,
NSSQLitePragmasOption:@{ @"journal_mode" : @"DELETE" }}
error:&error];
И предполагается ли это, чтобы файл был удален с других устройств, или у меня есть логика в приложении на других устройствах, чтобы обнаружить, что файл больше не находится в iCloud и делает то же самое на этом устройстве? И какова логика обнаружения того, что файл удален? Любая документация от Apple? –
Вызов 'removeUbiquitousContentAndPersistentStoreAtURL: options: error' удалит журналы транзакций Core Data из iCloud и удалит постоянный файл хранилища, вызов' removeItemAtURL: error' удалит пакет 'UIManagedDocument'. Теперь, когда я думаю об этом, так как я храню свои документы в вездесущем магазине, мне нужно сначала «setUbiquitous: NO», чтобы iCloud забыл об этом. См. WWDC 2013 Session 207 для получения дополнительной информации о 'removeUbiquitousContentAndPersistentStoreAtURL: options: error' – dtrotzjr
Уверен, но что происходит на других устройствах, когда приложение запускается на них? Принимая во внимание, что у них, вероятно, все еще есть рабочая копия базы данных, я не вижу уведомления в документах для Core Data, чтобы сообщить нам: «К сожалению, кто-то удалил все в облаке, что вы хотите сделать сейчас: a) build новый экземпляр и верните его в облаке, б) сохраните свою копию и сделайте ее только локальной, c) удалите свою копию или d) давайте примем решение? » –