基于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数据库的使用实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。