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

时间:2018-04-24 06:56:07

标签: swift realm realm-mobile-platform

我试过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...
    }
    ...
}

2 个答案:

答案 0 :(得分:1)

数组通常表示为List<T>。这允许在Realm中处理many-to-many关系。

Realm不支持字典。但它可以通过2个类和多个关系来实现。例如:

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

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

答案 1 :(得分:0)

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

如果你想通过Realm

使用数组,那么

 var userMachines = List<Machine>()

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

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

结果将以数组

的形式返回