目前我们一个Swift iOS App使用了Realm做数据存储,放弃了CoreData和Sqlite。
项目地址 https://github.com/realm
Realm是一个直接运行在手机,平板,可穿戴设备的移动端数据库,Sqlite和ORM框架的替代品。有Android,iOS和React native js版本。realm-cocoa项目包括 iOS/OS X版本的Objc和Swift实现。
项目地址 https://github.com/realm
Realm是一个直接运行在手机,平板,可穿戴设备的移动端数据库,Sqlite和ORM框架的替代品。有Android,iOS和React native js版本。realm-cocoa项目包括 iOS/OS X版本的Objc和Swift实现。
特性:
- Mobile-first: Realm是第一个直接针对运行在手机,平板,可穿戴设备设计和开发的数据库
- Simple: 数据直接暴露成类对象,通过代码查询,避免了ORM映射的 维护和性能问题。另外,Realm努力保持API只包括4个基础类(Object, Array, Results and Realms)和一个工具类(Migrations),用户可以凭直觉使用,在几分钟内在App中用上realm
- Modern: Realm支持关联,泛型,向量化,甚至支持Swift。
- Fast:Realm在数据库基本操作上比原生Sqlite还要快,同时又保持更丰富的功能特性集。
realm-browser-osx项目是一个Mac上的Realm数据库客户端工具,支持查看和修改realm数据库文件,功能类似sqliteAdmin。
需要条件
iOS 8 or later, OS X 10.9 or later & WatchKit,不支持iOS7.0,原因是iOS7.0不支持第三方动态库,而包含了swift代码又不能编译成静态库(但是objc版本realm支持iOS7.0)。Xcode 7.0 以上版本,建议Swift2.x以上版本。
示例代码
import RealmSwift
// Dog model
class Dog: Object {
dynamic var name = ""
dynamic var owner: Person? // Properties can be optional
}
// Person model
class Person: Object {
dynamic var name = ""
dynamic var birthdate = NSDate(timeIntervalSince1970: 1)
let dogs = List<Dog>()
}