2014-09-15 5 views
0

У меня есть приложение 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); 
     } 

} 

Я не могу воспроизвести проблему самостоятельно. Поскольку я решил не удалять исходный файл, я надеюсь, что смогу выполнить обновление, которое позволит пользователю восстановить старый файл. Тем не менее, я действительно хотел бы понять и воспроизвести проблему, прежде чем пытаться это сделать. Может ли кто-нибудь понять, почему это могло пойти не так, и почему я не смог воспроизвести его.

ответ

0

Вы скопировали файлы -wal и -shm?