0

アプリ ストアに ios アプリがありますが、最新のアップグレードでユーザーのデータが失われました。このリリースでは、ユーザーの sqlite ファイルの場所を変更する必要がありました (長い話です)。元のファイルは \Documents\myApp.sqlite にありました。アップグレードしたら、\Documents\myAppDB.sqlite にコピーします。コードの大部分を以下に示します。ストアの URL は新しい場所を指し、legacyStoreURL は古い場所を指しています。

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);
        }

}

自分のデバイスで問題を再現できません。元のファイルを削除しないことにしたので、ユーザーが古いファイルを復元できるようにアップグレードできることを願っています。ただし、これを試みる前に、問題を理解し、再現できるようにしたいと考えています。なぜこれがうまくいかなかったのか、なぜ再現できなかったのか、誰でも理解できますか?

4

1 に答える 1