Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

Realm

Realmを試してみた。便利だ。。

import Foundation
import RealmSwift

class Man : Object { // ObjectはRealmのクラス
    dynamic var name = "" // dynamicはobjective-Cのランタイムを利用して値にアクセスする
    dynamic var age = 10
    let cats = List<Cat>()  // ListはRealmのクラス
    
}

class Cat : Object {
    dynamic var name = ""
    let owners = LinkingObjects(fromType: Man.self, property: "cats")
}

class Test {
    func test() {
        let man = Man()
        man.name = "ho"
        man.age = 5
        
        
        let cat = Cat()
        cat.name = "mi"
        
        
        let realm = try! Realm()
        
        try! realm.write {
            realm.deleteAll()
            realm.add(man)
            realm.add(cat)
            let man = realm.objects(Man.self).filter("name == 'ho'").first!
            man.cats.append(cat)


        }
        

        
        let babies = realm.objects(Man.self).filter("age < 2")
        print("\(babies.count)")
        
        DispatchQueue(label: "background").async {
            autoreleasepool {
                let realm = try! Realm()
                let men = realm.objects(Man.self)
                let man = realm.objects(Man.self).filter("age == 5").first!
                try! realm.write {
                    man.age = 10
                }
                let cat = realm.objects(Cat.self).filter("name == 'mi'").first!
                
                print("\(man.cats.first?.name)")
                print("\(cat.owners.count)")

                let babies = realm.objects(Man.self).filter("age == 10")
                print("\(babies.count)")
                

            }
        }
    }
}