#encryption #realm
#шифрование #realm
Вопрос:
Мы используем версию Realm на Objective-C, версию 2.0.2. База данных в настоящее время зашифрована и находится в поле.
Периодически происходят сбои при запуске Realm с сообщением об ошибке «Невозможно открыть Realm в path … Сбой расшифровки файла Realm «. Мы используем последнюю доступную версию Realm и не смогли найти решение.
На самом деле нам не нужно, чтобы база данных была зашифрована на устройстве, поэтому мы хотели бы рассмотреть возможность удаления шифрования. Возможен ли такой вариант, и если да, то как мы перенесем существующие зашифрованные базы данных?
Ответ №1:
Вы можете использовать writeCopyToURL:encryptionKey:error:
с nil
ключом шифрования для записи незашифрованной копии, а затем переместить ее поверх исходного файла:
- (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;
}
Комментарии:
1. Спасибо — это похоже на то, что нам нужно. Я отвечу, насколько хорошо это работает, если мы решим пойти по этому пути.
2. @user3768135 чувак, прошло более 5 лет. Что произошло?