Для связи с моим сервером я использую объекты NetworkMessages
:
class NetworkMessage: Codable {
var version:Int?;
required init() {
}
}
class AddPlayerRequest: NetworkMessage {
var playerName: String?;
var playerHashedPw:String?;
}
Я сейчас пытаюсь кодировать мой объект в строку, чтобы отправить его по сети на мой сервер:
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let data = try! encoder.encode(netMsg)
let stringToSend = String(data: data, encoding: .utf8)
/* and send the string to the Server here... */
Теперь, когда я пытаюсь отправить Объект типа NetworkMessage
, все работает нормально, но когда я использую подкласс NetworkMessage
, в этом случае CreatePlayerRequest
, эта ошибка выдается:
Тема 1: EXC_BAD_ACCESS (код = 1, адрес = 0x10)
в этой строке:
let data = try! encoder.encode(netMsg)
Спасибо за вашу помощь!
******* ОБНОВЛЕНИЕ *******
Теперь я скопировал ваш код и получил ошибку в другой строке (см. Комментарий):
do {
let netMsg = AddPlayerRequest()
netMsg.playerName = "Test"
netMsg.playerHashedPw = "hynt87t7t76yt=="
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let data = try encoder.encode(netMsg) /* Thread 1: EXC_BAD_ACCESS */
let stringToSend = String(data: data, encoding: .utf8)
print(stringToSend ?? "")
} catch {
print(error)
}