У меня есть класс:
class ChatMessage: Object, Mappable {
dynamic var fromId = ""
dynamic var toId = ""
dynamic var message = ""
dynamic var fromName = ""
dynamic var created: Int64 = 0
required convenience init?(map: Map) {
self.init()
}
func configure(_ fromId:String,toId:String, message:String) {
self.fromId=fromId
self.toId=toId
self.message=message
self.created = Int64((NSDate().timeIntervalSince1970 * 1000.0))
}
func mapping(map: Map) {
created <- map["created"] //a: this was added later
fromId <- map["fromId"]
toId <- map["toId"]
message <- map["message"]
fromName <- map["fromName"]
}
}
Я использую ObjectMapper для сериализации объекта в JSON и Realm, чтобы сохранить его в локальной базе данных. Я добавил поле created
позже к сопоставлению, когда база данных Realm уже хранила объект ChatMessage
.
Теперь, когда я создаю экземпляр объекта ChatMessage
и пытаюсь преобразовать его в объект JSON, используя ObjectMapper. Ниже приведен код:
func sendChatMessage(_ chatMessage:ChatMessage, callback: @escaping DataSentCallback) -> Void {
var chatMessageString:String!
let realm = DBManager.sharedInstance.myDB
try! realm?.write {
chatMessageString = Mapper().toJSONString(chatMessage, prettyPrint: false)!
}
...
}
Теперь, когда я печатаю chatMessage
, я получаю:
ChatMessage {
fromId = 14;
toId = 20;
message = 2;
fromName = ;
created = 1477047392597;
}
И когда я печатаю chatMessageString
, я получаю:
"{\"toId\":\"20\",\"message\":\"2\",\"fromName\":\"\",\"fromId\":\"14\"}"
Почему поле created
не отображается в строке?