将数据存储在关系数据库中,并使用关系迅速存储



因此,我尝试首次尝试使用Realm Database。我正在尝试在数据库中建立关系。

这是JSON

{
            "id": 1,
            "name": "Definizioni generali - Doveri nell'uso della strada",
            "image": "559",
            "video": "0",
            "created_at": "2019-03-14 22:27:23",
            "updated_at": "2019-03-14 22:27:23",
            "sections": [
                {
                    "id": 3110,
                    "chapter_id": 1,
                    "name": "a) Definizioni stradali e di traffico",
                    "created_at": "2019-03-14 22:30:52",
                    "updated_at": "2019-03-14 22:30:52"
                },
                {
                    "id": 3123,
                    "chapter_id": 1,
                    "name": "b) Definizioni e classificazione dei veicoli",
                    "created_at": "2019-03-14 22:30:52",
                    "updated_at": "2019-03-14 22:30:52"
                },
                {
                    "id": 3131,
                    "chapter_id": 1,
                    "name": "c) Doveri del conducente nell'uso della strada - Convivenza civile e uso responsabile della strada",
                    "created_at": "2019-03-14 22:30:52",
                    "updated_at": "2019-03-14 22:30:52"
                },
                {
                    "id": 3137,
                    "chapter_id": 1,
                    "name": "d) Riguardo verso gli utenti deboli della strada",
                    "created_at": "2019-03-14 22:30:52",
                    "updated_at": "2019-03-14 22:30:52"
                }
            ]
        }

这是我的章节课

class Chapter: Object, Mappable {
@objc dynamic var id:Int = -1
@objc dynamic var name: String = kBlankString
@objc dynamic var image: String = kBlankString
@objc dynamic var video: String = kBlankString
@objc dynamic var createdAt: String = kBlankString
@objc dynamic var updatedAt: String = kBlankString
var sections = List<Section>()
override static func primaryKey() -> String? {
    return "id"
}
required convenience init?(map: Map) {
    self.init()
}
func mapping(map: Map) {
    id <- map["id"]
    name <- map["name"]
    image <- map["image"]
    video <- map["video"]
    createdAt <- map["created_at"]
    updatedAt <- map["updated_at"]
    sections <- map["sections"]

}

}

在此行上sections <- map["sections"]

我添加了一个断点并检查了po map["sections"].JSON

它在此处显示数据。

问题在于,章节存储在数据库中,但是每章的部分列表为空,而不是为

这是部分类:

class Section: Object, Mappable {
@objc dynamic var id: Int = -1
@objc dynamic var chapterID: Int = -1
@objc dynamic var name: String = kBlankString
@objc dynamic var createdAt: String = kBlankString
@objc dynamic var updatedAt: String = kBlankString
override static func primaryKey() -> String? {
    return "id"
}

required convenience init?(map: Map) {
    self.init()
}
func mapping(map: Map) {
    id <- map["id"]
    chapterID <- map["chapter_id"]
    name <- map["name"]
    createdAt <- map["created_at"]
    updatedAt <- map["updated_at"]
}

}

如果我做不正确的事情,请指导我,这是我对领域数据库的第一次尝试。谢谢

首先,我认为这是使用ObjectMapper(https://github.com/tristanhimmelman/objectmmapper),我我自己没有使用过。

,但是问题是您要为各节所做的地图会给您一个数组类型(如我所知),但是领域不支持数组(如您所知,正如您正确使用的那样List)。

我认为您需要一个自定义转换(https://github.com/tristanhimmelman/objectmmapper#custom-transforms)来转换为List<>类型。领域显示了如何做到这一点。这显示了在示例代码中完成您想要的等效行 - 重要的位是该行(翻译为使用您的类型):

        sections <- (map["sections"], ListTransform<Section>())

最新更新