Как обработать нулевой регистр JSON в Swift 4 Codable при использовании базы данных Realm? - PullRequest
0 голосов
/ 28 августа 2018

Я использую Codable в Swift 4 вместе с Realm Database для Swift. API, который я использую, отправляет некоторые поля как null , которые Codable может обработать, если это было упомянуто как необязательный , что я знаю, теперь я не могу сделать это, потому что @ objc аннотация обязательна в RealmSwift 4 , а также то, что эти поля не могут быть необязательными и должны быть инициализированы с некоторым значением. Если я пытаюсь сделать это, оно говорит

Свойство нельзя пометить @objc, поскольку его тип не может быть заменен в объективе C

Ниже приведены некоторые кодируемые классы, которые также являются классами объектов области

class HUB: Object,Codable{

    @objc dynamic var hubId:String?
    @objc dynamic var lastKnownIp:String?
    @objc dynamic var lastKnownPort:Int = 0
    @objc dynamic var nodes:[Node]?

}
class Node:Object,Codable {
    @objc dynamic var appStatus:Int = 0
    @objc dynamic var apps:[NodeApp]?
}

Если в JSON какое-либо значение из перечисленного равно нулю, тогда Кодируемое декодирование завершится неудачно, выдав ошибку

valueNotFound (Swift.Int, Swift.DecodingError.Context (codingPath: [_JSONKey (stringValue: «Индекс 0», intValue: 0), CodingKeys (stringValue: «узлы», intValue: ноль), _JSONKey (stringValue: «Index 0», intValue: 0), CodingKeys (stringValue: «appStatus», intValue: nil)], debugDescription: "Ожидаемое значение Int, но найдено значение NULL вместо. ", underError: nil))

Как я могу это решить?

...