/iOSORM

Primary LanguageObjective-C

iOSRealm

0.0.1 内容:

1、ORM数据库创建以及加密

2、数据库的增删改查

3、数据库版本更新(数据迁移)

useage 用法:

pod 'iOSOrm'

导入 #import "LMRealm.h"

如果需要使用数据库的加密功能,必须在appdelegate didFinishLaunchingWithOptions 里面初始化 [LMRealm shareRealm].isSecu = 1;\n

//数据库是否是加密安全的 默认不加密:0 否则加密;1 //注意这个参数如果设置为1的时候,必须在APP使用的时候进行初始化 否则会发生不可预见的错误 @property (nonatomic, assign) BOOL isSecu;

//创建数据库 数据库基本操作:增删改查 数据库迁移

+(LMRealm *)shareRealm;

/** 创建用户数据库(根据用户区分数据库)

@param userName 数据库Name */

  • (void)setDefaultRealmForUser:(NSString *)userName;

//插入或者更新数据 当object主键存在,则更新object;否则直接增加object

  • (void)realmAdd_UpdateObject:(id)object;

//delete object

  • (void)realmDeleteObject:(id)object;

// delete all object

  • (void)realmDeleteAllObject;

//查询数据 分为几种 精确查询和模糊查询 //query table all object objectName: 类名 /** query data

@param objectName tablename @return querydata */

  • (RLMResults *)queryAllObject:(NSString *)objectName;

//fuzzysearch 当 fuzzysearch=0是精确查找;1-3是模糊查询,其中1匹配开头,2匹配结尾,3匹配中间 /** query action

@param objectName tablename @param searchType query type @param attDic query param @return query data */

  • (RLMResults *)queryFuzzyObjectName:(NSString *)objectName fuzzyType:(FuzzySearch)searchType att:(NSDictionary *)attDic;

/** 条件排序

@param objectName 查询的类 @param name 排序的字段 @param ascending 升序还是降序 @return RLMResults */

  • (RLMResults *)queryAllObject:(NSString *)objectName sortKeyName:(NSString *)name cending:(BOOL)ascending;

/** 数据库迁移

@param version 数据库版本 @param userName 数据库名称 @param block 回调 数据库迁移可以分为几种: 1、值的更新
example: [migration enumerateObjects:Person.className block:^(RLMObject *oldObject, RLMObject *newObject) {

        // 将两个 name 合并到 fullName 当中
        newObject[@"fullName"] = [NSString stringWithFormat:@"%@ %@",
                                  oldObject[@"firstName"],
                                  oldObject[@"lastName"]];
        }];

2、属性的重命名 example: if (oldSchemaVersion < 1) { // 重命名操作必须要在 enumerateObjects: 调用之外进行 [migration renamePropertyForClass:Person.className oldName:@"yearsSinceBirth" newName:@"age"]; } 3、线性迁移 example: 假如说,我们的应用有两个用户: JP 和 Tim。JP 经常更新应用,但 Tim 却经常跳过某些版本。所以 JP 可能下载过这个应用的每一个版本,并且一步一步地跟着更新构架:第一次下载更新后,数据库架构从 v0 更新到 v1;第二次架构从 v1 更新到 v2…以此类推,井然有序。相反,Tim 很有可能直接从 v0 版本直接跳到了 v2 版本。 因此,您应该使用非嵌套的 if (oldSchemaVersion < X) 结构来构造您的数据库迁移模块,以确保无论用户在使用哪个版本的架构,都能完成必需的更新。 */

  • (void)DatabaseMigration_CurrentVersion:(NSString *)version dbName:(NSString *)userName block:(void(^)(RLMMigration *migration,uint64_t oldSchemaVersion))block;