美文网首页iOS开发
Realm 使用初体验-OC版

Realm 使用初体验-OC版

作者: AllenZYQ | 来源:发表于2016-03-17 16:44 被阅读1024次

    由于公司的项目数据库方面使用的是Realm,以前只用过coreData Sqlite,所以花了一下午的时间去简单的学习下Realm 。同时,网上的OC版本的介绍太少了= = 所以自己写了一个简单的Demo。

    首先是安装

     官方中文文档  这里面介绍的很详细。 但是不知道怎么回事,我用cocoaPod总是安装失败。所以我下载下来手动拉Framework了= =

    找到下载包中ios -> dynamic - > xcode-7  找到Realm.framework; 然后打开工程,在General中 找到Embedded Binaries 添加 Realm.framework。就大功告成了。

    需要准备的类

    我建立的是Dog类 :

    Dog.h

    #import <Realm/Realm.h>

    @interface Dog : RLMObject

    @property (nonatomic, strong) NSString * name;

    @property (nonatomic, assign) int age;

    Dog.m  (什么也没写)

    最简单的增删查改

    - (void)viewDidLoad {

    [super viewDidLoad];

    //初始化你的数据库类

    Dog * lcyDog = [[Dog alloc]init];

    lcyDog.name = @"LCY1";

    lcyDog.age = 24;

    //增加

    RLMRealm * realm = [RLMRealm defaultRealm];

    //    [realm beginWriteTransaction]; 这一句 写不写 我目前还没有发现区别

    [realm transactionWithBlock:^{

    //存储数据

    [realm  addObject:lcyDog];

    //写入数据库

    [realm commitWriteTransaction];

    }];

    //查询 

    RLMResults * tempArray = [Dog allObjectsInRealm:[RLMRealm defaultRealm]]; //查询有很多api 这个是将狗类的所有存入的对象取出来

    //我可以这样来修改

    //修改

    [realm transactionWithBlock:^{
            for (Dog * dog  in tempArray) {

                  if ([dog.name isEqualToString:@"LCY1"]) {

                      dog.name = @"LCY2222";

                 }

           }

        [realm commitWriteTransaction]; //注意  这里不能写在for循环里面 写入数据库, 要在循环改变完只好

       }];

    }

    //查询2

    Dog * myDog = [[Dog alloc]init];

    myDog.name = @"9567";

    myDog.age = 12;

    //    查询字符串

    //字符串 查找

    RLMResults  * pupies = [Dog objectsWhere:@"name = '刘春阳'"];

    //int NSInteger 查找

    //    RLMResults  * pupies = [Dog objectsWhere:@"age = 24"];

    NSLog(@"%@",pupies);

    //删除 (每次删除前都要 在 删除API 前  [rlmRealm beginWriteTransaction]; 后 [rlmRealm commitWriteTransaction];)

    eg:

    [rlmRealm beginWriteTransaction];

    [rlmRealm deleteObject:temArray.firstObject];

    [rlmRealm commitWriteTransaction];

    删除API 有三个 

    //实例化realm

    RLMRealm * rlmRealm = [RLMRealm defaultRealm];

    /将数据库里面的数据全部删除,如果你除了Dog 类  还有Person类也添加到了数据库, 那么也将删除你保存的数据


      [rlmRealm deleteAllObjects];

    //删除指定需求的数据(一个范围的)

    RLMResults * temArray = [Dog objectsWhere:@"name = 'LCY2'"];

       [rlmRealm deleteObjects:temArray];

    //删除指定的单个数据

    RLMResults * temArray = [Dog allObjects];

    [rlmRealm deleteObject:temArray.firstObject];

    就先写到这里吧, 只是一个新手的学习记录。对于官文所介绍的Relationships 在工程中实现却总是报错,等弄明白了会来更新的。

    还有 虽然我只是简单的用了下Realm ,但是真心觉得简单粗暴, 比起来写Sqlite 语句 要好多了!

    希望有喜欢用或者已经用了很久的Realm 的童鞋 交流~


    相关文章

      网友评论

        本文标题:Realm 使用初体验-OC版

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