【问题标题】:storing data in realm database with relationships swift将数据存储在具有关系的领域数据库中
【发布时间】:2019-03-19 19:04:24
【问题描述】:

所以我第一次尝试将领域数据库用于我的应用程序。我正在尝试在数据库中创建关系。

这是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 &lt;- 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"]

}

}

如果我做错了什么,请指导我,这是我第一次尝试使用领域数据库。谢谢

【问题讨论】:

    标签: ios swift database list realm


    【解决方案1】:

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

    但问题是你试图为这些部分做的地图会给你一个数组类型(据我所知),但 Realm 不支持数组(如你所知,你已经正确使用List)。

    我认为您需要自定义转换 (https://github.com/tristanhimmelman/ObjectMapper#custom-transforms) 来转换为 List&lt;&gt; 类型。 RealmAdditions 显示了如何执行此操作。这显示了在示例代码中执行您想要的操作的等效行 - 重要的是这一行(翻译为使用您的类型):

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

    【讨论】:

    • pod pod 'ObjectMapper+Realm' 为我解决了问题,感谢您的提示。你是生命的救星。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多