Realm数据库迁移

项目中用到了Realm做数据存储,在版本迭代时对存储的用户信息新增了一个属性,结果导致项目崩溃。经查阅发现本有做数据库迁移操作,现将Realm数据库迁移的方法贴出来,希望有用的同学可以拿走。

当RLMObject属性增加、删除、更改时,原数据库需要进行迁移处理,在
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;方法里写入如下对应操作的代码

RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
config.schemaVersion =2;
config.migrationBlock = ^(RLMMigration *migration, uint64_t   oldSchemaVersion){

// enumerateObjects:block: 遍历了存储在 Realm 文件中的每一个“Person”对象
[migration enumerateObjects:Person.className block:^(RLMObject *oldObject, RLMObject *newObject) {
    if(oldSchemaVersion <1) {// 只有当 Realm 数据库的架构版本为 0 的时候,才添加 “fullName” 属性
        newObject[@"fullName"] = [NSString stringWithFormat:@"%@ %@", oldObject[@"firstName"], oldObject[@"lastName"]]; 
    }
    if(oldSchemaVersion <2) {// 只有当 Realm 数据库的架构版本为 0 或者 1 的时候,才添加“email”属性
        newObject[@"email"] = @"";       
    }
    if(oldSchemaVersion <3) {// 替换属性名
        // 重命名操作应该在调用 `enumerateObjects:` 之外完成
       [migration renamePropertyForClass:Person.className oldName:@"yearsSinceBirth"newName:@"age"];   
    }
 }];

 [RLMRealmConfiguration setDefaultConfiguration:config];

你可能感兴趣的:(Realm数据库迁移)