Как исправить: Невозможно преобразовать значение типа: GameData - Codeable, в ожидаемый аргумент Data - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь декодировать мой ответ JSON data из типа: AnyObject? обратно во что-то, что можно распечатать на консоли или с которым можно взаимодействовать.

чтение данных перед декодированием projectName.GameData

Вот разбивка, данные возвращаются из ответа в виде: Any? Поскольку они отправляются как


class GameData : Codable {

    var isPlayerOneTurn: Bool!
    var wasCreated: Bool!
    var playerOne: String!
    var playerTwo: String!
    var board: [[Int]]!

   init() {

    }
}

Текущая ошибка, которую я получаю при попытке декодирования: Cannot convert value of type 'GameData' to expected argument type 'Data'

код:

let decoder = JSONDecoder()
let dataTest = try? decoder.decode(GameData.self, from: data)

Мне не хватает правильного метода init () в классе GameData?

UPDATE: данные были изменены на тип Data здесь: спасибо @rmaddy за комментарий, указывающий на это.

 let data = data as? Data

 let decoder = JSONDecoder()
 let dataTest = try? decoder.decode(GameData.self, from: data!)

 print("data: \(String(describing: dataTest))")

строка печати по-прежнему показывает data: Optional(projectName.GameData)

Что здесь не так, не позволяя мне просматривать значения класса GameData?

1 Ответ

0 голосов
/ 11 июня 2019

Строка печати, упомянутая в вопросе, была значением декодирования игрового объекта. Это было все, что должен был распечатать XCode - имя исходного объекта перед декодированием.Использование dataTest.myValue работало при доступе к данным из объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...