基于iOS Realm数据库的使用实例详解
首先下载Realm源代码,https://realm.io/cn/docs/objc/latest
将下载的文件解压,从ios/static/目录中将Realm.framework拖曳到Xcode工程的文件导航器内,然后在Xcode文件导航器中选中工程。然后选择应用目标,前往BuildPhases选项卡。在LinkBinarywithLibraries部分中单击+按钮,然后添加libc++.tbd和libz.tbd。这样还没有完,我们还需要安装插件,打开解压文件夹下的plugin,运行RealmPlugin.xcodeproj,然后重启XCode。
这样环境配置就完了,现在说重点如何去使用。
1.创建实体类
newFile翻到最下面点击创建Realm实体类
#import@interfaceTestBean:RLMObject @propertyNSString*name; @propertyNSIntegerage; @end //Thisprotocolenablestypedcollections.i.e.: //RLMArray RLM_ARRAY_TYPE(TestBean) #import"TestBean.h" @implementationTestBean @end
2.增删改查
这个增加,可以看到直接添加实体类就行了,这个RLMRealm就是数据库的操作类,以后所有操作都靠他。
-(void)addAction{
NSLog(@"add");
self.name=_tf_name.text;
self.age=[_tf_age.textintegerValue];
TestBean*bean=[[TestBeanalloc]init];
bean.name=self.name;
bean.age=self.age;
RLMRealm*realm=[RLMRealmdefaultRealm];
[realmtransactionWithBlock:^{
[realmaddObject:bean];
}];
}
删除也是通过删除实体类来实现,但是我们需要首先通过查询出实体类才行。这个查询我们可以看到通过我们创建的实体类就能实现
-(void)deleteAction{
NSLog(@"delete");
RLMResults*dogs=[TestBeanallObjects];
RLMRealm*realm=[RLMRealmdefaultRealm];
[realmtransactionWithBlock:^{
for(TestBean*beanindogs){
[realmdeleteObject:bean];
}
}];
}
更新也是通过改变实体类的数据来实现
-(void)updateAction{
NSLog(@"update");
RLMResults*dogs=[TestBeanallObjects];
[[RLMRealmdefaultRealm]transactionWithBlock:^{
for(TestBean*beanindogs){
bean.name=@"李四";
}
}];
}
查询我们还可以添加条件
//使用断言字符串来查询 RLMResults*tanDogs=[DogobjectsWhere:@"color='tan'ANDnameBEGINSWITH'B'"]; //使用NSPredicate来查询 NSPredicate*pred=[NSPredicatepredicateWithFormat:@"color=%@ANDnameBEGINSWITH%@", @"tan",@"B"]; tanDogs=[DogobjectsWithPredicate:pred];
3.排序
这个是在查询完后去实现,通过实体类的key来排序。
-(void)sortAction{
NSLog(@"query");
RLMResults*dogs=[[TestBeanallObjects]sortedResultsUsingKeyPath:@"name"ascending:YES];
[[RLMRealmdefaultRealm]transactionWithBlock:^{
for(TestBean*beanindogs){
NSLog(@"%@",bean.name);
}
}];
}
4.小结
只说了常用的功能,贴上官方中文文档供大家参考
https://realm.io/cn/docs/objc/latest
5.例子代码
//
//ViewController.m
//BmobTest
//
//Createdbyshanreal-iOSon2017/12/9.
//Copyright©2017年shanreal.LongZhenHao.Allrightsreserved.
//
#import"ViewController.h"
#import"TestBean.h"
@interfaceViewController()
@property(nonatomic,strong)UIButton*add;
@property(nonatomic,strong)UIButton*delete;
@property(nonatomic,strong)UIButton*update;
@property(nonatomic,strong)UIButton*query;
@property(nonatomic,strong)UIButton*sort;
@property(nonatomic,strong)NSString*name;
@property(nonatomic,assign)NSInteger*age;
@property(nonatomic,strong)UITextField*tf_name;
@property(nonatomic,strong)UITextField*tf_age;
@end
@implementationViewController
-(void)viewDidLoad{
[superviewDidLoad];
//Doanyadditionalsetupafterloadingtheview,typicallyfromanib.
_add=[[UIButtonalloc]initWithFrame:CGRectMake(10,30,100,20)];
[_addsetTitle:@"add"forState:UIControlStateNormal];
[_addsetTitleColor:[UIColorblackColor]forState:UIControlStateNormal];
[_addaddTarget:selfaction:@selector(addAction)forControlEvents:UIControlEventTouchUpInside];
_delete=[[UIButtonalloc]initWithFrame:CGRectMake(10,60,100,20)];
[_deletesetTitle:@"delete"forState:UIControlStateNormal];
[_deletesetTitleColor:[UIColorblackColor]forState:UIControlStateNormal];
[_deleteaddTarget:selfaction:@selector(deleteAction)forControlEvents:UIControlEventTouchUpInside];
_update=[[UIButtonalloc]initWithFrame:CGRectMake(10,90,100,20)];
[_updatesetTitle:@"update"forState:UIControlStateNormal];
[_updatesetTitleColor:[UIColorblackColor]forState:UIControlStateNormal];
[_updateaddTarget:selfaction:@selector(updateAction)forControlEvents:UIControlEventTouchUpInside];
_query=[[UIButtonalloc]initWithFrame:CGRectMake(10,120,100,20)];
[_querysetTitle:@"query"forState:UIControlStateNormal];
[_querysetTitleColor:[UIColorblackColor]forState:UIControlStateNormal];
[_queryaddTarget:selfaction:@selector(queryAction)forControlEvents:UIControlEventTouchUpInside];
_sort=[[UIButtonalloc]initWithFrame:CGRectMake(10,150,100,20)];
[_sortsetTitle:@"sort"forState:UIControlStateNormal];
[_sortsetTitleColor:[UIColorblackColor]forState:UIControlStateNormal];
[_sortaddTarget:selfaction:@selector(sortAction)forControlEvents:UIControlEventTouchUpInside];
_tf_name=[[UITextFieldalloc]initWithFrame:CGRectMake(50,300,200,20)];
_tf_name.placeholder=@"name";
_tf_age=[[UITextFieldalloc]initWithFrame:CGRectMake(50,350,200,20)];
_tf_age.placeholder=@"age";
[self.viewaddSubview:_add];
[self.viewaddSubview:_delete];
[self.viewaddSubview:_update];
[self.viewaddSubview:_query];
[self.viewaddSubview:_sort];
[self.viewaddSubview:_tf_name];
[self.viewaddSubview:_tf_age];
}
-(void)addAction{
NSLog(@"add");
self.name=_tf_name.text;
self.age=[_tf_age.textintegerValue];
TestBean*bean=[[TestBeanalloc]init];
bean.name=self.name;
bean.age=self.age;
RLMRealm*realm=[RLMRealmdefaultRealm];
[realmtransactionWithBlock:^{
[realmaddObject:bean];
}];
}
-(void)deleteAction{
NSLog(@"delete");
RLMResults*dogs=[TestBeanallObjects];
RLMRealm*realm=[RLMRealmdefaultRealm];
[realmtransactionWithBlock:^{
for(TestBean*beanindogs){
[realmdeleteObject:bean];
}
}];
}
-(void)updateAction{
NSLog(@"update");
RLMResults*dogs=[TestBeanallObjects];
[[RLMRealmdefaultRealm]transactionWithBlock:^{
for(TestBean*beanindogs){
bean.name=@"李四";
}
}];
}
-(void)queryAction{
NSLog(@"query");
RLMResults*dogs=[TestBeanallObjects];
[[RLMRealmdefaultRealm]transactionWithBlock:^{
for(TestBean*beanindogs){
NSLog(@"%@",bean.name);
}
}];
}
-(void)sortAction{
NSLog(@"query");
RLMResults*dogs=[[TestBeanallObjects]sortedResultsUsingKeyPath:@"name"ascending:YES];
[[RLMRealmdefaultRealm]transactionWithBlock:^{
for(TestBean*beanindogs){
NSLog(@"%@",bean.name);
}
}];
}
-(void)didReceiveMemoryWarning{
[superdidReceiveMemoryWarning];
//Disposeofanyresourcesthatcanberecreated.
}
@end
以上这篇基于iOSRealm数据库的使用实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。