Swift - 使用Realm (2) 簡易CRUD
本篇摘要
參考好文:
https://medium.com/@riccione83/easy-use-of-realm-in-swift-444f41a5742d
https://ithelp.ithome.com.tw/articles/10183329
- Realm CRUD
- Realm 參考好文
- 建立簡單的View
- 新增一個Realm data Model 取名為RealmItem
class RealmItem: Object {
@objc dynamic var id = 0
@objc dynamic var textString = ""
override static func primaryKey() -> String? {
return "id"
}
}
- 新增RealmModel
class RealmModel{
var id : Int?
var textString : String?
}
- 建立RealmAdapter 負責存取Realm的資料
class RealmItemAdapter {
private var database:Realm
static let sharedInstance = RealmItemAdapter()
private init() {
database = try! Realm()
print(Realm.Configuration.defaultConfiguration.fileURL!)
}
//get all record
func getItem() -> [RealmModel] {
var realmModels : [RealmModel] = []
let results: Results = database.objects(RealmItem.self)
if results.count > 0 {
results.forEach { item in
let model = RealmModel()
model.id = item.id
model.textString = item.textString
realmModels.append(model)
}
}
return realmModels
}
//insert record
func addItem(model: RealmModel) {
try! database.write {
let item = RealmItem()
item.id = incrementID()
item.textString = model.textString!
database.add(item)
}
}
//update record by id
func updateByID(model: RealmModel) {
if let item = database.objects(RealmItem.self).filter("id == %@", model.id!).first{
try! database.write {
item.id = model.id!
item.textString = model.textString!
database.add(item, update: true)
}
}
}
//delete all
func deleteAllFromDatabase() {
try! database.write {
database.deleteAll()
}
}
//delete by id
func deleteByID(id: Int) {
let itemDelete = database.objects(RealmItem.self).filter("id == %@", id)
try! database.write {
database.delete(itemDelete)
}
}
private func incrementID() -> Int {
return (database.objects(RealmItem.self).max(ofProperty: "id") as Int? ?? 0) + 1
}
}
- 在controller為CRUD Button新增事件
@IBAction func createClick(_ sender: UIButton) {
let model = RealmModel()
model.textString = lbInput.text
RealmItemAdapter.sharedInstance.addItem(model: model)
}
@IBAction func readClick(_ sender: UIButton) {
if let model = RealmItemAdapter.sharedInstance.getItem().first
{
currentModel = model
lbOutput.text = model.textString
}
}
@IBAction func updateClick(_ sender: UIButton) {
if let model = currentModel
{
model.textString = lbInput.text
RealmItemAdapter.sharedInstance.updateByID(model: model)
}
}
@IBAction func deleteClick(_ sender: UIButton) {
RealmItemAdapter.sharedInstance.deleteAllFromDatabase()
}

留言
張貼留言