由于公司的项目数据库方面使用的是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 的童鞋 交流~
网友评论