如何在 RealmSwift 中使用数组或字典?

How to use Array or Dictionary in RealmSwift?

我试过 RealmSwift。

然后我保存了我的模型。 但是 RealmSwift 不支持 Array, Dic... 我能做什么?

import Foundation
import RealmSwift

class DumbData: Object {
    @objc dynamic var myModel: [[String: String]]!
}

class ViewController: UIViewController {
    ...

    let data = DumbData()
    data.myModel = [["asdf": "1234"]]

    let realm = try! Reaml()
    try realm.write {
        realm.add(data) // error. Realm Does not support Array, Dic...
    }
    ...
}

数组在Realm中通常表示为List<T>. This allows to handle many-to-many关系。

Realm 不支持字典。但是可以用 2 类 和一对多的关系来实现。例如:

class User: Object {
    dynamic var name = ""
    let WhosebugQuestions = List<Question>()
}

class Question: Object {
    dynamic var title = ""
    dynamic var message = ""
    // etc.
}

List是Realm中用来定义一对多关系的容器类型。 与 Swift 的 Array 一样,List 是一种泛型类型,它根据其存储的对象类型进行参数化。

如果你想通过 Realm 使用数组

 var userMachines = List<Machine>()

并且如果您想在将数据保存到 Realm 后再次将其用作数组 使用

func fetchRealmMachine() -> [Machine]{
    let realm = try! Realm()
    let realmMachines = realm.object(ofType: UserSession.self)?.userMachines
    return Array(realmMachines!)
}

结果将 return 作为数组