RealmSwift是一种流行的移动端数据库解决方案,它提供了一种简单且高效的方式来存储和管理移动应用程序的数据。在RealmSwift中,创建一对一关系可以通过以下步骤来实现:
- 定义数据模型:首先,需要定义两个数据模型类,分别表示关系中的两个对象。例如,我们可以创建一个Person类和一个Address类来表示人和他们的地址。
class Person: Object { |
RealmSwift是一种流行的移动端数据库解决方案,它提供了一种简单且高效的方式来存储和管理移动应用程序的数据。在RealmSwift中,创建一对一关系可以通过以下步骤来实现:
class Person: Object { |
由于最近项目中在用Realm,所以把自己实践过程中的一些心得总结分享一下。
Realm是由Y Combinator孵化的创业团队开源出来的一款可以用于iOS(同样适用于Swift&Objective-C)和Android的跨平台移动数据库。目前最新版是Realm 2.0.2,支持的平台包括Java,Objective-C,Swift,React Native,Xamarin。
Realm官网上说了好多优点,我觉得选用Realm的最吸引人的优点就三点:
跨平台:现在很多应用都是要兼顾iOS和Android两个平台同时开发。如果两个平台都能使用相同的数据库,那就不用考虑内部数据的架构不同,使用Realm提供的API,可以使数据持久化层在两个平台上无差异化的转换。
简单易用:Core Data 和 SQLite 冗余、繁杂的知识和代码足以吓退绝大多数刚入门的开发者,而换用 Realm,则可以极大地减少学习成本,立即学会本地化存储的方法。毫不吹嘘的说,把官方最新文档完整看一遍,就完全可以上手开发了。
可视化:Realm 还提供了一个轻量级的数据库查看工具,在Mac Appstore 可以下载“Realm Browser”这个工具,开发者可以查看数据库当中的内容,执行简单的插入和删除数据的操作。毕竟,很多时候,开发者使用数据库的理由是因为要提供一些所谓的“知识库”。
MBProgressHUD和SVProgressHUD各自都有缺点:
当A页面进入B页面,B页面查询数据时,报错需要弹出toast弹窗,并退出B页面到A页面。一般toast弹窗是现实在keywindow上的,但是kewindow是B页面,而由于自动返回A页面,B页面销毁了,就看不到这个toast弹窗了。使用MBProgressHUD时就会遇到该问题。有的app为了解决这个问题人为延迟推出B页面,这样降低用户的体验流畅度,不完美。
另一种采用SVProgressHUD来实现,它是异步时弹窗,显示调用弹窗和实际显示弹窗有一个时间差,正好在B页面调用弹窗,在回到A页面时,弹窗出来,所以能显示出来。我们遇到过一个问题,一个请求后台在十几毫秒内返回,蒙层弹窗还没有出来请求回来了,并且取消弹窗,实际上SVProgressHUD还没有出来,导致后面没有取消处理了,一直在哪里转圈了。
最佳解决方案是创建一个优先级高于当前级别的window显示蒙层和动画。
在为我的ios app加入icloud同步功能时候,使用模拟器运行app时遇到一个错误:
Optional(<CKError 0x60000246ccc0: "Permission Failure" (10/2007); server message = "CREATE operation not permitted"; op = 1E2586ACAD82E59D; uuid = DEDC710D-84EC-4353-B310-9B9B65A32338; container ID = "***">) |
我首先去检查了模拟器里是否已经登录了appleid账号(新申请的)。没问题,是已登录的,但是奇怪的是icloud选项是灰色的,看来这就是问题原因了。
This document contains a brief description of the Anki2 database structure as of version 11 (see ver
field of the col
table). There are planned upgrades to Anki’s db structure as explained in the planned changes document.
Thanks to @sartak and @fasiha for starting to make this. Additional thanks to @bibstha for more documentation
Anki uses a single SQLite database to store information on all of its decks, templates, fields and cards. This file can be found inside the Anki package file (the .apkg
file) with the extension .anki2
.
Extracting example.apkg
we have the following structure.
. |