膜‏法‏世‏家‏法贝儿这个牌子怎么样样?

Realm数据库的简单介绍和使用
时间: 00:26:10
&&&& 阅读:931
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&给大家介绍一个数据库操作的框架Realm,本文主要以iOS 平台的使用场景为例。
realm是一个跨平台移动数据库引擎,支持iOS、OS X(Objective-C和Swift)以及Android;
核心数据引擎由C++打造,并不是建立在SQLite之上的ORM, 拥有独立的数据库存储引擎;
据官方称性能上比sqlite, coredata牛逼,而且使用起来更加简单, 更易入门。
下载地址:
使用教程:
辅助工具:
1、Realm Browser:可视化访问 Realm 数据库。
2、Xcode插件:可以快速创建Realm可存储模型对象。
开始Realm实战:
为了帮助您更好地理解 Realm 的使用,下面我们将会对 Realm 的相关术语和主要类进行一个大致的介绍:
RLMRealm&: RLMRealm 是框架的核心所在,是我们构建数据库的访问点,就如同 Core Data 的管理对象上下文( managed &object context )一样。出于简单起见, realm 提供了一个名为 defaultRealm 的单例,在本教程中我们就仅使用这个单例来完成我们所需的功能。当然,我们也可以导入外部已经编写好的 realm 数据库文件,也可以在我们不需要将数据保存在硬盘上时使用 “ 内存实例对象 ” ( in-memory realm instance ),此外,还可以同时使用多个数据库文件。
RLMObject&:这是我们自定义的 realm 数据模型。创建数据模型的行为将会影响到数据库的结构。要创建一个数据模型,我们只需要继承 RLMObject ,然后设计我们想要存储的属性即可。
关系 (Relationships)&:通过简单地在数据模型中声明一个 RLMObject 类型的属性,我们就可以创建一个 “ 一对多 ” 的对象关系。同样地,借助 RLMArray 我们还可以创建 “ 多对一 ” 和 “ 多对多 ” 的关系。
写操作事务 (Write Transactions)&:数据库中的所有操作,比如创建、编辑,或者删除对象,都必须在事务中完成。 “ 事务 ” 是指位于 beginWriteTransaction() 以及 commitWriteTransaction() 操作之间的代码段。
查询 (Queries)&:要在数据库中检索信息,我们需要用到 “ 检索 ” 操作。检索最简单的形式是对 RLMObject 对象发送 allObjects() 消息。如果需要检索更复杂的数据,那么还可以使用断言( predicates )、复合查询以及结果排序等等操作。
RLMResults&:这个类是执行任何查询请求后所返回的类,其中包含了一系列的 RLMObjects 对象。和 NSArray 类似,我们可以用下标语法来对其进行访问,并且还可以决定它们之间的关系。不仅如此,它还拥有许多更强大的功能,包括排序、查找等等操作。
1.简单的数据操作
1.1准备: 创建数据模型, 继承自RLMObject
创建对象的方式:1. 普通创建;2. 通过父类RLMObject中的方法快速创建&initWithValue。
请注意,所有的必需属性都必须在对象添加到 Realm 前被赋值,由于Realm 在自己的引擎内部有很好的语义解释系统,所以 Objective?C 的许多属性特性将被忽略,如nonatomic, atomic, strong, copy 和 weak 等。 因此为了避免误解,官方推荐在编写数据模型的时候不要使用任何的属性特性。
1.2 使用RLMRealm对象, 保存指定模型
有3种写入方式,首先获取RLMRealm对象:RLMRealm *realm = [RLMRealm defaultRealm];
写入方式1 &:
//开启写入事务
[realm beginWriteTransaction];
//添加模型对象
[realm addObject:stu];
//提交写入事务
[realm commitWriteTransaction];&
写入方式2:
[realm transactionWithBlock:^{
& & & &&[realm addObject:stu];
写入方式3:
[Stu createInRealm:realm withValue:@{@"stu_id": @22, @"name": @"马冬梅2", @"age": @666}];
1.3 使用RLMRealm对象, 更新指定模型
方式1:在事务中直接更新对象
[realm beginWriteTransaction];
stu.name = @"土豆";
[realm commitWriteTransaction];
方式2:根据主键进行更新
//1. 要求操作的模型, 必须实现方法+ (NSString *)primaryKey 返回主键//2. 在事务中调用方法 [realm addOrUpdateObject:stu2];
方式3:根据主键进行更新//1. 要求操作的模型, 必须实现方法+ (NSString *)primaryKey 返回主键//2. 在事务中调用方法
[Stu createInRealm:realm withValue:@{@"stu_id": @22, @"name": @"马冬梅2", @"age": @666}];
1.4 使用RLMRealm对象, 删除数据
删除指定的对象(在事务中)
[realm deleteObject:stu]; 注意: 必须是从realm数据库中获取的模型对象, 而不是自己创建的 RLMObject *obj = [realm objectWithClassName:@"Stu" forPrimaryKey:@2];
删除所有对象(在事务中)
[realm deleteAllObjects];
1.5 使用RLMRealm对象, 查询数据
这里引出链式查询的概念:在查询结果的基础上, 进行二次查询,如下:
[stus objectsWhere:@"address beginswith ‘北京‘"];
[stus sortedResultsUsingProperty:@"name" ascending:YES];
注意:查询出来的结果对象是懒加载, 只有真正访问时, 才会加载相应对象, 所以, 这里的分页, 其实就是从所有集合中分页获取即可。代码演示:
RLMResults&Dog *& *dogs = [Dog allObjects];
for (NSInteger i = 0; i & 5; i++) {
Dog *dog = dogs[i];
RLMResults&Stu *& *stus = [Stu objectsWhere:@"name = ‘马冬梅‘"];查询所有:[Stu allObjects];注意事项: 1. 所有的查询(包括查询和属性访问)在 Realm 中都是延迟加载的,只有当属性被访问时,才能够读取相应的数据 2. 查询结果并不是数据的拷贝:修改查询结果(在写入事务中)会直接修改硬盘上的数据。 3. 一旦检索执行之后, RLMResults 将随时保持更新
2.支持的数据类型
支持的类型包括:BOOL, bool, int, NSInteger, long, long long, float, double, NSString, NSDate, NSData, NSNumber。
缺点是不支持集合类型,其解决方案是&序列化成NSData进行存储 &或者&转换成RLMArray&RLMObject&进行存储
对一关系& & &当一个对象持有另外一个对象时, 比如人有一个宠物??
1. 在Dog中, 遵循指定协议方法
RLM_ARRAY_TYPE(Dog)
RLM_ARRAY_TYPE 宏创建了一个协议,从而允许 RLMArray&Dog& 语法的使用。
2. 在Person中, 定义属性
@property (nonatomic, strong) RLMArray&Dog *&&Dog& *
注:虽然可以给 RLMArray 属性赋值为 nil,但是这仅用于“清空”数组,而不是用以移除数组。这意味着您总是可以向一个 RLMArray 属性中添加对象,即使其被置为了 nil。
举例:人拥有狗, 狗又有相应的主人?实现方法:
1. Dog中定义属性
@property (readonly) RLMLinkingObjects *
2. 实现协议方法, 标明链接关系
+ (NSDictionary&NSString *,RLMPropertyDescriptor *& *)linkingObjectsProperties {
@"master": [RLMPropertyDescriptor descriptorWithClass:NSClassFromString(@"Stu") propertyName:@"dogs"]
未完待续。。。标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文地址:http://www.cnblogs.com/imsz/p/6649194.html
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!用唱吧扫描二维码,可以马上找到歌曲进行评论互动哦~
Ta的其他歌曲
唱吧Android版
扫描二维码下载什么药里含有RLM睾丸酮
什么药里含有RLM睾丸酮
什么药里含有RLM睾丸酮
我感觉我的前列腺出问题了,常常感觉一阵一阵隐痛,而且越来症状越明显了,同时伴有尿频,尿急的症状,改怎么治疗?
我感觉我的前列腺出问题了,常常感觉一阵一阵隐痛,而且越来症状越明显了,同时伴有尿频,尿急的症状,改怎么治疗?
性功能方面的男科病,大概有很多年了,一直也没好,要怎么治?
医院出诊医生
擅长:性障碍、前列腺、包皮包茎等
擅长:包皮包茎、性功能障碍、男性不育
共1条医生回复
因不能面诊,医生的建议及药品推荐仅供参考
职称:护士
专长:消化科疾病和内镜治疗方法
&&已帮助用户:329
意见建议:你好,kuba和rados这两种植物被研究发现含有高活性的RLM睾丸酮。其他雄性激素药物也含有RLM睾丸酮。
问治疗阳痿早泄的特效药有哪些? 早泄中药
职称:医生会员
专长:输卵管阻塞,附件炎,排卵期出血
&&已帮助用户:90176
早泄是指阴茎插入阴道后,在女性尚未达到性高潮,而男性的性交时间短于2分钟,提早射精而出现的性交不和谐障碍,早泻的原因有很多如:精神因素,尿道炎,精囊炎,前列腺炎,包皮过长,紧身内裤等,建议到正规医院做相关检查确诊后对症治疗
问治疗阳痿早泄的特效药有哪些? 早泄是怎么回事
职称:医师
专长:社区医师、妇科
&&已帮助用户:120017
阳痿病又称勃起功能障碍(国际上简称ED),在性交时,阴茎勃起硬度不足以插入阴道或不能维持至射精。由于阴茎阳痿致病因素较为复杂,虽然阳痿治疗方法很多,但效果仍不够理想。因此在决定治疗方案之前应进行综合分析,多种途径治疗,才能获得满意效果。
问请问漳州德邦生物科技公司生产的睾丸酮是中药合成的吗...
职称:护士
专长:小儿多动症,手足口病,小儿肥胖症,小儿肥胖
&&已帮助用户:11324
病情分析: 睾丸酮本身就是一种激素,是雄性激素,这个一般不是从中药里面提取出来的。意见建议:要用也可以使用,可以改善症状,但是这个是激素类的药物,有副作用的。
问早泄的药什么是早泄的定义?
职称:医师
专长:社区医师、妇科
&&已帮助用户:120017
早泄类型分为器质性(主要有前列腺炎等疾病引起)和非器质性(心理性,习惯性,及因包皮过长等正常原因引发的射精过快现象),导致早泄的原因主要可以分为心理和生理两大部分,从治疗角度来说,单独心理和生理方面来治疗早泄,还很难实现。再就是中医角度,要考虑是由于肾虚导致的,归属于西医的非器质性早泄,如果是的话,最好是积极运用中医药调理治疗。
问早泄怎么办?中医治早泄效果怎么样?
职称:医师
专长:社区医师、妇科
&&已帮助用户:120017
早泄类型分为器质性(主要有前列腺炎等疾病引起)和非器质性(心理性,习惯性,及因包皮过长等正常原因引发的射精过快现象),导致早泄的原因主要可以分为心理和生理两大部分,从治疗角度来说,单独心理和生理方面来治疗早泄,还很难实现。再就是中医角度,要考虑是由于肾虚导致的,归属于西医的非器质性早泄,如果是的话,最好是积极运用中医药调理治疗。
问治疗阳痿早泄的特效药有哪些? 阳萎早泄治疗方法
职称:医生会员
专长:输卵管阻塞,附件炎,排卵期出血
&&已帮助用户:90176
早泄是指阴茎插入阴道后,在女性尚未达到性高潮,而男性的性交时间短于2分钟,提早射精而出现的性交不和谐障碍,早泻的原因有很多如:精神因素,尿道炎,精囊炎,前列腺炎,包皮过长,紧身内裤等,建议到正规医院做相关检查确诊后对症治疗
关注此问题的人还看了
大家都在搜:
关注健康生活!
想做生殖整形手术,多少钱?求咨询
男性前列腺炎是男性性功能障碍的主要原因?
如题,怎么办呢?此类情况需要做哪些检查呢?以下为大家详细介绍
最近几年,男性疾病越来越多,射精痛就是其中一种发病率较高的疾病
尿道炎多是细菌,支原体等病原体感染导致,治疗需根据症状找准病因
一次性治疗好是患者的心愿,以下介绍两种方法,其一是中药治疗
性功能障碍致身体损伤,体质下降出现神经敏感
得了前列腺炎,男科医生支招!
包皮过长因长期的尿液、包皮垢的慢性刺激,可诱发包皮龟头炎等
想做包皮手术,想咨询费用,男科医生在线》》
百度联盟推广
免费向百万名医生提问
填写症状 描述信息,如:小孩头不发烧,手脚冰凉,是怎么回事?
无需注册,10分钟内回答
搜狗联盟推广
百度联盟推广
医生在线咨询
评价成功!RLM-I测氡仪_图文_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
RLM-I测氡仪
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢ORA-27468 EXFSYS.RLM$EVTCLEANUP任务引起的故障 - Oracle Life - 云和恩墨,成就所托!
ORA-27468 EXFSYS.RLM$EVTCLEANUP任务引起的故障
客户的数据库中遇到如下错误:Errors in file /oracle/admin/cdx/bdump/cdx2_j000_663594.trc:ORA-12012: error on auto execute of job 42780ORA-27468: "EXFSYS.RLM$EVTCLEANUP" is locked by another process伴随这个错误还出现了大量的ORA-04031 错误:Thu Dec 30 01:27:23 2010Errors in file /oracle/admin/cdx/bdump/cdx2_cjq0_958586.trc:ORA-04031: unable to allocate ORA-04031: unable to allocate 4064 bytes of shared memory ("shared pool","select a.obj# OBJOID, a.clas...","sga heap(1,0)","kglsim heap")ORA-04031: unable to allocate ORA-04031: unable to allocate 4064 bytes of shared memory ("shared pool","select a.obj# OBJOID, a.clas...","sga heap(1,0)","kglsim heap")ORA-04031: unable to allocate ORA-04031: unable to allocate 4064 bytes of shared memory ("shared pool","select a.obj# OBJOID, a.clas...","sga heap(1,0)","kglsim heap")ORA-04031: unable to allocate ORA-04031: unable to allocate 3896 bytes of shared memory ("shared pool","select a.obj# OBJOID, a.clas...","sga heap(1,0)","kglsim object batch")&bytes of shared memory ("","","","")&bytes of shared memory ("","","","")ORA-04031: unable to allocate OR bytes of shared memory ("","","","")ORA-04031: unable to allocate ORA-04031: unable to allocate 4064 bytes of shared memory ("shared pool","select a.obj# OBJOID, a.clas...","sga heap(1,0)","kglsim heap")数据库中的这些JOB是做什么的呢?These jobs under EXFSYS schema are related to the Expression Filter feature in 10G.The Expression Filter feature can be installed on an Oracle10G Standard or Enterprise Editiondatabase. It is supplied as a set of PL/SQL packages, a Java package, a set of dictionary tables,and catalog views. All these objects are created in a dedicated schema named EXFSYS. This schemais not part of the typical installation of the database and will not exist before the Expression Filter is installed.如果数据库不使用这个特性,可以Disable EXFSYS模式:
1. Login as SYSDBA2. @$ORACLE_HOME/rdbms/admin/catnoexf.sql参考Metalink: 诊断故障时,可以手工执行任务:BEGIN &&& dbms_scheduler.run_job(job_name =& 'EXFSYS.RLM$EVTCLEANUP', use_current_session =& FALSE); END;/可以通过10046事件跟踪诊断其具体不能完成之原因,更改use_current_session=&TRUE测试(参考Metalink Note: )。
历史上的今天...
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
By eygle on
CopyRight &copy
, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-0 or 7037 业务合作:}

我要回帖

更多关于 法国有美帕这个牌子吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信