如何使用Realm Swift和ObjectMapper持久化数组?

时间:2016-07-21 22:26:03

标签: json swift realm objectmapper

当我尝试保存来自JSON字符串的数组时出现错误。我试图使用RLMArray但没有成功。

我收到的错误是:

  

'RLMException',原因:'属性'页面'的类型为'RLMArray<(null)>'这不是受支持的RLMArray对象类型。

我的模特课:

public class Project: Object, Mappable {

    dynamic var id = 0
    dynamic var user: User!
    dynamic var page: RLMArray!
    dynamic var error_message: String! = ""
    dynamic var status: String! = ""

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

    required convenience public init?(_ map: Map) {
        self.init()
        mapping(map)
    }

    public func mapping(map: Map) {
        user <- map["user"]
        page <- map["page"]
        error_message <- map["error_message"]
        status <- map["status"]

    }
}

JSON文件:

let parameters = [
                "user": [
                    "username": "Marcus",
                    "password": "123asd"
                ],
                "page": [
                    "home": [
                                [
                                "kind": "navigation",
                                "title": "suite",
                                "image": "ic_suite",
                                "backgroundImage": "ic_background1"
                                ],
                                [
                                    "kind": "navigation",
                                    "title": "jardim",
                                    "image": "ic_jardim",
                                    "backgroundImage": "ic_background2"
                                ]
                            ],
                    "suite": [
                                [
                                "kind": "button",
                                "title": "My Master Suite",
                                "textColor": "0x000000",
                                "textSize": "16"
                                ]
                    ]
                ],
                "status": "success",
                "error_message": ""
        ]
self.project = Mapper<Project>().map(parameters)

1 个答案:

答案 0 :(得分:1)

您的类继承自Realm Swift的基类Object,但尝试在其接口中使用Realm Objective-C类型RLMArray。你不能以这种方式混合Realm Swift和Realm Objective-C。使用Realm Swift时,应该使用List<T>作为数组属性。

相关问题