2016-10-10 4 views
1

Realmバージョン2.0.2のObjective-Cバージョンを使用しています。データベースは現在暗号化されており、フィールドにあります。既存のレルムデータベースから暗号化を削除する方法はありますか?

Realmの起動時に断続的なクラッシュが発生しました。「パスでレルムを開くことができません...レルムファイルの復号化に失敗しました」というエラーメッセージが表示されます。私たちはRealmの最新バージョンを利用しており、解決策を見つけることができませんでした。

データベースを暗号化する必要はありませんので、暗号化を解除することを検討します。これはオプションですか、そうであれば既存の暗号化されたデータベースをどのように移行しますか?

答えて

1

あなたは暗号化されていないコピーを書くためにnil暗号化キーでwriteCopyToURL:encryptionKey:error:を使用することができ、その後、元のファイルの上に移動していること:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    RLMRealmConfiguration *confg = [[RLMRealmConfiguration alloc] init]; 
    config.encryptionKey = ...; 
    NSURL *tempUrl = [NSURL URLWithString:[NSTemporaryDirectory() stringByAppendingPathComponent:"temp.realm"]]; 

    // Open the Realm within an autoreleasepool so that it's closed before we try 
    // to overwrite the original file 
    @autoreleasepool { 
     RLMRealm *realm = [RLMRealm realmWithConfiguration:config error:nil]; 
     [realm writeCopyToURL:tempUrl encryptionKey:nil error:nil]; 
    } 

    [[NSFileManager defaultManager] moveItemAtURL:tempUrl toURL:config.fileUrl error:nil]; 

    // ... other didFinishLaunchingWithOptions things ... 

    return YES; 
} 
+0

をありがとう - これは私たちが必要なもののように聞こえます。もし私たちがこのルートをとることにしたら、それがどれほどうまくいっているか、私は答えます。 – user3768135

+0

これはどのように迅速に行うことができますか? –

関連する問題