web-dev-qa-db-ja.com

Swiftでアレイをレルムに保存しますか?

オブジェクトの配列をRealmに保存することはできますか?アレイを変更するときはいつでも、レルムに保存する必要があります。

現在の解決策は、_for loop_を使用してオブジェクトのオブジェクトを保存することです。追加/変更オブジェクトの場合、save()を呼び出しても機能しますが、オブジェクトを削除した場合は機能しません。

_class CustomObject: Object {
    dynamic var name = ""
    dynamic var id = 0

    override static func primaryKey() -> String? {
    return "id"
    }
}

struct RealmDatabase {

    static var sharedInstance = RealmDatabase()

    var realm: Realm!

    let object0 = CustomObject()
    let object1 = CustomObject()

    var array = [object0, object1]

    init() {
        self.realm = try! Realm()
    }

    func save() {

        for object in self.array {
            try! self.realm.write {
                self.realm.add(object, update: true)
            }
        }
    }

}
_
10
MJQZ1347

オブジェクトのリストを保存するには、Swift配列ではなく、レルムListを使用する必要があります。

let objects = List<CustomObject>()

次に、要素を追加できます。

objects.append(object1)

多くの関係にコレクション公式ドキュメント のセクションを見てください。

7
redent84

Swift

func saveRealmArray(_ objects: [Object]) {
        let realm = try! Realm()
        try! realm.write {
            realm.add(objects)
        }
    }

次に、レルム「オブジェクト」の配列を渡して関数を呼び出します。

saveRealmArray(myArray)

注:realm.add(objects)の構文は、単一オブジェクトのadd関数と同じですが、オートコンプリートで確認すると、次のように表示されます:add(objects:Sequence)

6
Andrea.Ferrando