【问题标题】:How to use Array or Dictionary in RealmSwift?如何在 RealmSwift 中使用数组或字典?
【发布时间】:2018-04-24 06:56:06
【问题描述】:

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

【问题讨论】:

    标签: swift realm realm-mobile-platform


    【解决方案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.
    }
    

    【讨论】:

      【解决方案2】:

      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!)
      }
      

      结果将作为数组返回

      【讨论】:

        猜你喜欢
        • 2016-02-21
        • 1970-01-01
        • 2021-05-08
        • 1970-01-01
        • 2019-06-29
        • 1970-01-01
        • 1970-01-01
        • 2016-12-17
        • 1970-01-01
        相关资源
        最近更新 更多