Я использую 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))
Как я могу это решить?