Swift-->Realm1.0.2 数据库上手指南

IOS中, 替代Core Data的数据库框架. 比Core Data的配置简单N倍.

强烈建议查看官网文档:
1.0.2 英文文档: https://realm.io/docs/swift/latest/
1.0.0中文文档: https://realm.io/cn/docs/swift/latest/

1:Realm的库引用

https://realm.io/cn/docs/swift/latest/#swift-22
安装CocoaPods 0.39.0 或者更高版本;
在您的Podfile中,添加use_frameworks!和pod ‘RealmSwift’ 到您的主要和测试目标;
终端运行pod install;
采用 CocoaPods 生成的.xcworkspace来运行工程!

2:实例类的声明

import RealmSwift

//必须继承Object(这个是Realm声明的类)
class RealmBean: Object {
    dynamic var string: String? = nil // 注意dynamic关键字
    let var int = RealmOptional<Int>() //基础类型的可选型需要使用RealmOptional包裹, 使用:int.value(可选类型)
    let var bool = RealmOptional<Bool>()
    let var double = RealmOptional<Double>()
}

支持类型:

https://realm.io/cn/docs/swift/latest/#section-4
支持的类型
Realm支持以下的属性类型:Bool、Int8、Int16、Int32、Int64、Double、Float、String、NSDate 以及NSData.

CGFloat 属性被取消了,因为它的类型不依赖于平台。

String、NSDate 以及 NSData 类型的属性都可以添加可选值。Object 类型的属性必须设置为可选。存储可空数字可以通过 Realm 可选值来实现。

可选属性声明:

https://realm.io/cn/docs/swift/latest/#optional-properties

这里写图片描述

3:Realm的增删改查操作

// MARK: 声明一个Realm对象
let realm = try! Realm()

//添加操作
func create() {
    // 方法1
//      realm.beginWrite()
//      for _ in 0..<1000 {
//          let bean = RealmBean()
//          realm.add(bean)
//      }
//      try! realm.commitWrite()

    // 方法2
    try! realm.write {
        for _ in 0..<1000 {
            let bean = RealmBean()
            realm.add(bean)
        }
    }
    //方法1的效率更高, 并且支持realm.cancelWrite()回滚操作
}

//修改操作
func modify() {
    try! realm.write {
        for (index, bean) in realm.objects(RealmBean).enumerate() {
            bean.double.value = bean.double.value! + Double(1)//直接赋值就可以
        }
    }
}

//查询操作
func query() {
    let restuls = realm.objects(RealmBean)
}

//删除操作
func delete() {
    // 方法1
//      try! realm.write {
//          realm.deleteAll()
//      }

    // 方法2
    try! realm.write {
        realm.delete(realm.objects(RealmBean))
    }
    //方法1效率更高
}

4:删除Realm数据库文件

class func cleanRealm() {
    let realmURL = Realm.Configuration.defaultConfiguration.fileURL!//你可以通过这个属性,查看到Realm数据的文件路径
    let realmURLs = [
        realmURL,
        realmURL.URLByAppendingPathExtension("lock"),
        realmURL.URLByAppendingPathExtension("log_a"),
        realmURL.URLByAppendingPathExtension("log_b"),
        realmURL.URLByAppendingPathExtension("note")
    ]
    let manager = NSFileManager.defaultManager()
    for URL in realmURLs {
        do {
            try manager.removeItemAtURL(URL)
        } catch {
            // 处理错误
            print("删除出错...")
        }
    }
}

https://realm.io/cn/docs/swift/latest/#realm-
这里写图片描述

操作 插入1000条 插入10000条 修改全部 查询全部 删除全部
第一次 0.24秒 2.94秒 3.44秒 0.001秒 0.002秒
第二次 0.24秒 3.14秒 3.64秒 0.002秒 0.001秒
第三次 0.27秒 2.99秒 3.78秒 0.001秒 0.002秒

速度相当快, 比CoreData强太多了…

源码: https://github.com/angcyo/RealmDemo


至此: 文章就结束了,如有疑问: QQ群 Android:274306954 Swift:399799363 欢迎您的加入.

©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值