realm数据库开发(四)

2017-11-29  本文已影响0人  小歪子go

realm数据库的升级

以前在使用sqlite数据库用于移动开发APP的开发的时候,当数据库表有新增的字段的时候,我常用的方法就是根据APP的版本新增补表的方式来解决此类问题,这样处理起来相当麻烦,往往要耗费好长时间,一直在寻求一个简单方便快捷的设局库升级额方法,在使用realm数据库的使用,使我的这一个想法变成了现实

1、创建realm对象的时候,实现数据迁移的回调

+(RLMRealm *)getCustomRealm{
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    NSString *realmPath = [path stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.realm",realmName]];
    RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
    config.fileURL = [NSURL fileURLWithPath:path];
    config.objectClasses = @[KKExamRLMModel.class,KKInquiryRLMModel.class];
    config.readOnly = NO;
    config.schemaVersion = realmVersion;
    config.migrationBlock = ^(RLMMigration *migration , uint64_t oldSchemaVersion) {       // 这里是设置数据迁移的block
        if (oldSchemaVersion < realmVersion) {
     //若需要对一些字段处理的话可以根据版本对比,对一些字段进行特殊处理
        }
    };
    [RLMRealmConfiguration setDefaultConfiguration:config];
    customRealm = [RLMRealm realmWithURL:[NSURL fileURLWithPath:realmPath]];
    return customRealm;
}

2、当表有新增字段的时候,改变数据库的版本realmVersion(设置成宏)

define realmVersion  9 //当前数据库版本

上一篇下一篇

猜你喜欢

热点阅读