如何从字典创建领域实例(具有嵌套对象)?

时间:2017-02-17 10:04:03

标签: ios swift3 realm

例如,我有像这样的模型class

class User: Objects {
    var firstName: String?
    var lastName: String?
    var friends: List<User>?

}

Dictionary喜欢这个

{
   firstName : "Mohshin"
   lastName : "Shah"
   friends : [
              {
               firstName : "Friend 1"
               lastName : "abc"
               },
              {
               firstName : "Friend 2"
               lastName : "def"
               }
              ]
}

我想使用字典制作一个User对象。我曾尝试过Realm&#39; init(value: Any)方法,它只创建具有平面值的用户,但不启动朋友。

2 个答案:

答案 0 :(得分:7)

您遇到这些问题的原因是因为List<User>对象必须在使用前初始化。 Realm建议将ListRealmOptional个对象声明为let,然后在模型内部初始化它们。

除此之外,您还需要使用dynamic var属性声明其他属性,以使属性成为底层数据库的访问者。

有关我在文档的Property AttributesSupported Types部分中提到的内容的更多信息。尽管如此,我建议您将模型更改为以下内容:

import RealmSwift

class User: Object {
    dynamic var firstName: String?
    dynamic var lastName: String?
    let friends = List<User>()
}

我希望这会有所帮助,如果您需要更多帮助,请告诉我。

答案 1 :(得分:0)

尝试这样的事情

func getRealm(dictionary:NSDictionary) {
    let first = dictionary.object(forKey: "first_name")
    let last = dictionary.object(forKey: "first_name")
    var friends = Array<Any>()
    for dict in dictionary.object(forKey: "friends") {
        var user = User()
        user.getRealm(dict)
        friends.append(user)
    }
}

在你的领域模型类中添加这样的方法