realm数据库使用
Realm的优点
1.跨平台:Realm可同时兼顾iOS和Android两个平台,使用时不用考虑内部数据的架构不同。
2.简单易用:相比Core Data 和 SQLite 晦涩难懂的代码与知识要简单的多,可以减少开发成本
3.可视化:可以使用Realm Browser ,随时查看数据库中的数据
4.查询速度极快
Realm支持OC和Swift语言开发。
使用CocoaPods进行管理Realm第三方库
platform :ios , ‘8.0’
target ‘项目名称’ do
pod 'Realm'
end
RLMRealm:Realm是框架的核心所在,该类提供默认的构造方法defaultRealm
RLMRealm *reamlm = [RLMRealm defaultRealm];
RLMObject :创建存储的数据模型时,需要继承这个类
#import <Realm/Realm.h>
@interface ACLModel : RLMObject
@property NSString *systemSn;
@property NSInteger permissionValue;
@property NSString *moduleSn;
@end
写操作事务(Write Transactions):数据库中的所有操作(插入,查询,删除,修改)
查询(Queries):要在数据库中检索信息
创建数据库,并设置数据库的名字和存储的地方
- (void)creatDataBaseWithName:(NSString *)databaseName {
NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [docPath objectAtIndex:0];
NSString *filePath = [path stringByAppendingPathComponent:databaseName];
NSLog(@"数据库目录 = %@",filePath);
RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
config.fileURL = [NSURL URLWithString:filePath];
[RLMRealmConfiguration setDefaultConfiguration:config];
}
设置主键需要重写
+ (NSString *)primaryKey {
return @"id";
}
单个写入操作将会阻塞其余的操作
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock:^{ [
realm addObject: Car];
}];
});
数据的查询
RLMResults *results = [ACLModel objectsWhere:@"systemSn = 'assets' AND moduleSn = 'check' AND permissionValue = 0"];
NSLog(@"======%lu",(unsigned long)results.count);