Realm 使用初体验-OC版

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

首先是安装

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

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

需要准备的类

我建立的是Dog类 :

Dog.h

#import

@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版)