【问题标题】:realm encription, Realm file decryption failed,what‘s wrong?领域加密,领域文件解密失败,怎么回事?
【发布时间】:2023-03-04 09:26:01
【问题描述】:

我的代码在这里:

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

但是当我迁移数据库时,似乎“领域文件解密失败”,应用程序崩溃了。

我的迁移代码在这里:

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

帮帮我!!!

【问题讨论】:

    标签: ios realm realm-migration


    【解决方案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 文件,以防需要迁移并且不会执行迁移。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多