У меня есть приложение ios в магазине приложений, которое в последнем обновлении пользователи потеряли свои данные. Для этого релиза мне пришлось изменить местоположение файла sqlite пользователя (длинный рассказ). Оригинальный файл находился в папке \ Documents \ myApp.sqlite. С обновлением я копирую его в \ Documents \ myAppDB.sqlite. Код в основном показан ниже, где адрес магазина указывает на новое местоположение и legacyStoreURL на прежнее место.Как остановить пользователя, потеряв файл основных данных после обновления iOS
BOOL stillUsingLegacyStore = YES;
stillUsingLegacyStore = !([fileManager fileExistsAtPath:[[self storeURL] path]]);
if ([fileManager fileExistsAtPath:[[self legacyStoreURL] path]] && stillUsingLegacyStore==YES)
{
_store = [_coordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:[self legacyStoreURL]
options:options
error:&error];
if (!_store)
{
FLOG(@"Error adding OLD persistent store to coordinator %@\n%@",
[error localizedDescription], [error userInfo]);
return;
}
_store = [_coordinator migratePersistentStore:_store
toURL:[self storeURL]
options:options
withType:NSSQLiteStoreType
error:&error];
if (!_store)
{
FLOG(@"Error adding OLD persistent store to coordinator %@\n%@",
[error localizedDescription], [error userInfo]);
return;
}
}
else
{
_store = [_coordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:[self storeURL]
options:options
error:&error];
if (!_store)
{
NSLog(@"Failed to add store. Error: %@", error);abort();
return;
}
else
{
NSLog(@"Successfully added store: %@", _store);
}
}
Я не могу воспроизвести проблему самостоятельно. Поскольку я решил не удалять исходный файл, я надеюсь, что смогу выполнить обновление, которое позволит пользователю восстановить старый файл. Тем не менее, я действительно хотел бы понять и воспроизвести проблему, прежде чем пытаться это сделать. Может ли кто-нибудь понять, почему это могло пойти не так, и почему я не смог воспроизвести его.