美文网首页数据处理安全
Realm Objective-C 数据库操作

Realm Objective-C 数据库操作

作者: kevingod | 来源:发表于2015-09-02 15:20 被阅读4658次

    今天研究了一下Realm数据库,觉得特别厉害哈。Realm支持iOS,OS X,Android,速度快,操作相对来说比较简单。

    最重要的是官网对于数据库版本升级和迁移的问题(这个在以前使用FMDB感觉是非常复杂的问题),提供了简单容易的办法。

    下面使用object-C语言来操作常见的增,删,改,查操作。swift先暂时不写了,swift还不稳定,等2.0再说。

    参考地址:

    http://www.cocoachina.com/ios/20150505/11756.html 

    https://realm.io/cn/ 

    https://realm.io/docs/objc/latest/api/ 

    1.Realm安装(参考官网,但是我有修改)


    手动安装 (Objective-C & Swift)

    下载最新的Realm发行版本并在本地解压缩.

    从ios/或者osx/目录里,把Realm.framework文件拖动到你的Xcode开发项目里的File Navigator 中。确保Copy items into destination group’s folder已经被选中,按Finish

    在Xcode file explorer中选中你要的开发项目.选择target,点击Build Phases选项. 在Link Binary with Libraries里按+, 添加libc++.dylib.

    如果使用Realm + Swift, 拖动Swift/RLMSupport.swift到你的Xcode project的File Navigator中。点选Copy items if needed

    如果在OSX项目中使用Realm,点击左上角的 + ,选择New Copy Files Phase,将其重命名为Copy Frameworks, 将Destination设置为Frameworks,并且添加Realm.framework。

    特别强调,在iOS目录里面,有2个文件夹,请添加static文件夹的Realm.framework,我暂时不明白使用dynamic文件为什么会报错。

    PS:Realm浏览器在需要在github里面找,在tools文件夹里面,官网的压缩包里面不存在这个。需要运行

    Realm Browser项目,可以导出安装包,成为独立的安装包。

     

    Realm Browser界面

    创建一个测试项目,即可开始操作数据库。下面示例操作:


    2.增加操作

    @interface Person : RLMObject  //人员

    @property NSInteger _ID;        //ID

    @property NSString* name;      //姓名

    @property NSInteger age;        //年龄

    @property NSString* sex;        //性别

    @end

    创建一个人员类,继承RLMObject(必须继承)

    //数据库操作对象

    RLMRealm *realm = [RLMRealm defaultRealm];

    //打开数据库事务

    [realm transactionWithBlock:^(){

              Person* _temp = [[Person alloc] init];

              _temp._ID = ++_Count;    //计算的当前ID

              _temp.name = @"kevingao";

              _temp.age = 26;

              _temp.sex = @"male";

               //添加到数据库

               [realm addObject:_temp];

               //提交事务

               [realm commitWriteTransaction];

    }];

    一个简单的添加操作,其他事情不需要我们来管理,RLMRealm会帮助我们搞定。


    3.查询操作

    下面我们查询所有的数据。

    //获得当前所有数据

    RLMResults* tempArray = [Person allObjects];

    for (Person* model in tempArray) {

          //打印数据

           NSLog(@"ID : %ld, name : %@, age : %ld , sex : %@",model._ID,model.name,model.age,model.sex);

    }

    查询操作可能是最复杂的操作,使用谓词或者是objectWhere语句来设计查询语句来查询。


    4.修改操作

    //数据库操作对象

    RLMRealm *realm = [RLMRealm defaultRealm];

    [realm transactionWithBlock:^(){

                //获得对象

               RLMResults* result = [Person allObjects];

               //获得第一个对象

               Person* temp = [result objectAtIndex:0];

               //修改sex

                temp.sex = @"ttt";

               //提交事务,即被修改

               [realm commitWriteTransaction];

    }];


    5.删除操作

    //数据库操作对象

    RLMRealm *realm = [RLMRealm defaultRealm];

    [realm transactionWithBlock:^(){

              //获得对象

             RLMResults* result = [Person allObjects];

             //清空

             [realm deleteObject:result.firstObject];

    }];

    以上就简单的说了一下操作。

    大家可以尝试下哈,水平有限,当改天再重新扩展一下内容。

    PS:思考了一个小问题,如果使用MJExtension框架,因为需要继承,会和RLMObject发生冲突,所以Model需要做一个桥接转换。就这样。

    相关文章

      网友评论

      本文标题:Realm Objective-C 数据库操作

      本文链接:https://www.haomeiwen.com/subject/fxxwqttx.html