шифрование области, не удалось расшифровать файл области, что не так?

Мой код здесь:

RLMRealmConfiguration *configuration = [RLMRealmConfiguration defaultConfiguration];
NSString *filePath = [NSString stringWithFormat:@"%@",configuration.fileURL];
NSString *dateBaseName = @"aaa";
configuration.fileURL = [NSURL URLWithString:[[[filePath stringByDeletingLastPathComponent]
                                               stringByAppendingPathComponent:dateBaseName]
                                              stringByAppendingPathExtension:@"realm"]];
 configuration.encryptionKey = [self getEncriptionKey];
[RLMRealmConfiguration setDefaultConfiguration:configuration];
NSError *err = nil;
RLMRealm *realm = [RLMRealm realmWithConfiguration:configuration
                                             error:&err];
if (!realm) {
    NSLog(@"Error opening realm: %@", err);
}

но когда я переношу базу данных, кажется, что «расшифровка файла Realm не удалась», и приложение разбилось.

и мой код миграции здесь:

RLMRealmConfiguration *configuration = [RLMRealmConfiguration defaultConfiguration];
configuration.schemaVersion  = 3;
configuration.encryptionKey = [self getEncriptionKey];
configuration.migrationBlock = migrationBlock;
[configuration setDeleteRealmIfMigrationNeeded:YES];
[RLMRealmConfiguration setDefaultConfiguration:configuration];

Помоги мне !!!


person Line    schedule 14.06.2016    source источник


Ответы (1)


Когда вы выполняете свой код миграции?

Ваш код должен выглядеть так:

RLMRealmConfiguration *configuration = [RLMRealmConfiguration defaultConfiguration];

NSString *filePath = [NSString stringWithFormat:@"%@",configuration.fileURL];
NSString *dateBaseName = @"aaa";

configuration.fileURL = [NSURL URLWithString:[[[filePath stringByDeletingLastPathComponent]
                                               stringByAppendingPathComponent:dateBaseName]
                                              stringByAppendingPathExtension:@"realm"]];
configuration.encryptionKey = [self getEncriptionKey];
configuration.schemaVersion  = 3;
configuration.migrationBlock = migrationBlock;

[RLMRealmConfiguration setDefaultConfiguration:configuration];

NSError *err = nil;
RLMRealm *realm = [RLMRealm realmWithConfiguration:configuration
                                             error:&err];
if (!realm) {
    NSLog(@"Error opening realm: %@", err);
}

Также обратите внимание, что [configuration setDeleteRealmIfMigrationNeeded:YES]; удалит файл Realm, если потребуется миграция, а миграция не будет выполнена.

person Dmitry    schedule 14.06.2016