今天要介绍 Realm 的 CRUD ,也就是新增、读取、修改、删除的基本操作
延续昨天的,打开 .xcworkspace 档,并 import RealmSwift
一开始会出现错误,因为专案还没有读取到 RealmSwift 的档案,所以直接按 Command + B ,这样错误就会消失
第一次的 Build 时间会比较久是正常的
完成後错误就消失了
新增物件档,选择 Cocoa Touch Class
Subclass of 输入 Object
完成後再 import RealmSwift
再来输入以下程序码, classA 和 classB 就是 Data 物件的栏位
primary key 就是物件的主键,不能重复存在
UUID 是电脑自动生成的乱码
回到 ViewController 输入以下程序码
class ViewController: UIViewController {
let realm = try! Realm()
override func viewDidLoad() {
super.viewDidLoad()
printDataBase()
}
@IBAction func createBtnClick(_ sender: UIButton) {
let result = Data()
// 填入栏位资料
// 像UUID及Date这种会自动生成的资料,在这里可以不用给
// Optional 及有预设初始值的也不一定要给值
result.value = "Hi"
try! realm.write {
realm.add(result)
}
}
@IBAction func readBtnClick(_ sender: UIButton) {
printDataBase()
}
@IBAction func updateBtnClick(_ sender: UIButton) {
// 确认资料库是有资料的
guard realm.objects(Data.self).count != 0 else { print("nil"); return }
let primaryKey = realm.objects(Data.self)[0].id // 指定资料库的第零比资料
// 透过forPrimaryKey选择需要改动的资料
let result = realm.object(ofType: Data.self, forPrimaryKey: primaryKey)
try! realm.write {
result?.value = "Bye"
}
}
@IBAction func deleteBtnClick(_ sender: UIButton) {
// 确认资料库是有资料的
guard realm.objects(Data.self).count != 0 else { print("nil"); return }
let primaryKey = realm.objects(Data.self)[0].id // 指定资料库的第零比资料
// 透过forPrimaryKey选择需要改动的资料
let result = realm.object(ofType: Data.self, forPrimaryKey: primaryKey)
try! realm.write {
realm.delete(result!)
}
}
func printDataBase() {
// 确认资料库是有资料的
guard realm.objects(Data.self).count != 0 else { print("nil"); return }
realm.objects(Data.self).forEach { (data) in
print("\(data.id) , \(data.value ?? "nil")")
}
print("=========================================")
}
}
我在页面中加入了四个 Button 分别是新增、读取、修改及删除第一笔资料
阵列中常用的方法还有 filter() 跟 map(),filter() 方法可以根据指定的筛选条件...
PHP是什麽呢? php一开始全名为Personal Home Page,当初创始人Rasmus L...
在前几天我们大概理解了整个 ROS 的架构,接下来要介绍几个 ROS 开发上蛮常用到的工具。 今天主...
前言 今年算是拖到最後一天最後一刻才开赛... 因为疫情的关系今年实在有点忙不过来, 因此早在两个月...
从Swift 到 OC 第二天, 属性 @property 的特性(attribute) tags:...