хранение данных в базе данных областей с быстрыми отношениями - PullRequest
0 голосов
/ 19 марта 2019

Итак, я впервые пытаюсь использовать базу данных областей для своего приложения.Я пытаюсь создать связь в базе данных.

вот 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"]

}

}

Пожалуйста, сообщите мне, если я делаю что-то неправильно, это моя первая попытка с базой данных области.Спасибо

1 Ответ

1 голос
/ 20 марта 2019

Во-первых, я предполагаю, что это использует ObjectMapper (https://github.com/tristanhimmelman/ObjectMapper),, который я сам не использовал.

Но проблема будет в том, что карта, которую вы пытаетесь сделать для секций, даст вам тип массива (насколько я понимаю), но Realm не поддерживает массивы (как вы знаете, как вы правильно использовали List).

Я думаю, вам понадобится пользовательское преобразование (https://github.com/tristanhimmelman/ObjectMapper#custom-transforms) для преобразования в тип List<>. RealmAdditions показывает, как это сделать. Это показывает эквивалентную строку для выполнения что вы хотите в примере кода - важная часть этой строки (переводится для использования ваших типов):

        sections <- (map["sections"], ListTransform<Section>())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...