一.简介
Realm 于2014 年7月发布,是一个跨平台的移动数据库引擎,专门为移动应用的数据持久化而生。其目的是要取代 Core Data 和 SQLite。
二.注意点
* Realm 不是基于 Core Data,也不是基于 SQLite 封装构建的。它有自己的数据库存储引擎。
* Realm 具有良好的跨平台特性,可以在 iOS 和 Android 平台上共同使用。
* Realm 还提供了一个轻量级的数据库查看工具(Realm Browser)。你也可以用它进行一些简单的编辑操作(比如插入和删除操作)
三.安装
* 下载:http://static.realm.io/downloads/swift/latest
* 拖拽 RealmSwift.framework 和 Realm.framework 文件到”Embedded Binaries”选项中。选中 Copy items if needed 并点击 Finish
四.使用,这是贴一下简单的封装的方法
import RealmSwift
class NNContact: Object {
@objc dynamic var id = UUID().uuidString
@objc dynamic var name = ""
@objc dynamic var sex = ""
@objc dynamic var origin_icon = ""
@objc dynamic var small_icon = ""
@objc dynamic var fatherName = ""
@objc dynamic var fatherPhone = ""
@objc dynamic var remark = ""
@objc dynamic var tag = ""
@objc dynamic var createData = Date().string(withFormat: "yyyy/MM/dd-hh:mm:ss")
///设置索引
override class func indexedProperties() -> [String] {
return ["name"]
}
///设置主键
override class func primaryKey() -> String? {
return "id"
}
}
import RealmSwift
class NNContactViewModel: NSObject {
static let shared = NNContactViewModel()
let realm = try! Realm()
//增
func insertContact(_ value: [String: String]) -> Void {
let contact = NNContact(value: value)
try! realm.write {
realm.add(contact)
}
}
//删
func deleteContact(_ contact: NNContact) -> Void {
try! realm.write {
realm.delete(contact)
}
}
//改
func updateContact(_ contactblock: ()->Void) -> Void {
try! realm.write {
contactblock()
}
}
//查
func fetchAllContacts() -> Results<NNContact> {
return realm.objects(NNContact.self)
}
///存图片至沙盒
func saveImage(_ image: UIImage, key: String) -> Void {
let documnts = NSHomeDirectory().appendingPathComponent("/Documents")
let filepath = documnts.appendingPathComponent("\(key).png")
(UIImagePNGRepresentation(image)! as NSData).write(toFile: filepath, atomically: true)
}
///从沙盒取图片
func fetchImage(_ key: String) -> UIImage? {
let documnts = NSHomeDirectory().appendingPathComponent("/Documents")
let filepath = documnts.appendingPathComponent("\(key).png")
return UIImage(contentsOfFile: filepath)
}
func call(withPhone phone: String?) -> Void {
if let tel = phone,
let url = URL(string: "tel://\(tel)")
{
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
}
五.官方网站
https://realm.io/