Swift (iOS/OSX): はじめての Realm

NSUsersDefault 使うならこっち使った方が便利でいいと俺の中で話題に

公式サイト

 

準備

Podfile 使います、Podfile に以下追加

pod 'RealmSwift'

インストール

$ pod install

ちなみに pod 'Realm' ってやつは RealmSwift に依存関係があって自動で読み込まれるので記載はどっちでもいいです

 

実装

こんな感じのデータクラスを作成しておいて

import Foundation
import RealmSwift

class Item: Object {
    
    dynamic var id:Int = 0
    dynamic var title:String = ""
    dynamic var contentDescription:String = ""
    dynamic var date:NSDate = NSDate()
    dynamic var isUnread:Bool = true
    
    convenience required init(id:Int, title: String, description: String, dateString: String) {
        self.init()
        
        self.id = id
        self.title = title
        self.contentDescription = description
        self.date = NSDate.convertStringToDate(dateString)
    }
    // インデックス
    override static func primaryKey() -> String? {
        return "id"
    }
    // 新規保存
    func save() {
        let realm = Realm()
        realm.write {
            realm.add(self, update: true)
        }
    }
    // 更新
    func update(title: String, description: String, dateString: String) {
        let realm = Realm()
        realm.write {
            self.title = title
            self.contentDescription = description
            self.date = NSDate.convertStringToDate(dateString) // dateString を NSDate に変換するオレオレメソッドです
        }
    }
    // 書き込み
    func read() {
        let realm = Realm()
        
        realm.write {
            self.isUnread = false
        }
    }
}

使うクラスで import RealmSwift して、

保存したり

let item = Item(id: id, title: title, description: description, dateString: published_at)
item.save()

読み込んだり

let realm = Realm()
let items = realm.objects(Item)
println(items)

更新したりする

let item = items[0]
item.read() // 既読にする