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 //当前数据库版本
网友评论