Кто-нибудь знает, как настроить версию JSONDecoder
для Mac, чтобы она могла использовать decode
типы фрагментов/значений?
Я пишу код Swift, который должен работать как на Mac, так и на iOS. Я использую Decodable
с JSONDecoder
, чтобы попытаться разобрать JSON. У меня есть перечисление, которое Decodable
выглядит следующим образом:
enum SomeEnum: Int, Decodable {
case valueA = 0
case valueB = 1
}
И чтобы проверить Decodable
аспект этого, у меня есть этот модульный тест...
func test_problem() {
let jsonData = "0".data(using: .utf8)!
let result = try! JSONDecoder().decode(SomeEnum.self, from: jsonData)
XCTAssertEqual(result, SomeEnum.valueA)
}
Это удается при запуске против цели iOS. ОДНАКО при запуске против «Мой Mac» (который находится в Мохаве) из вызова decode
возникает ошибка следующим образом:
Тема 1: Фатальная ошибка: "попробуй!" выражение неожиданно вызвало ошибку: Swift.DecodingError.dataCorrupted(Swift.DecodingError.Context(codingPath: [], debugDescription: «Данные данные недействительны в формате JSON.», базовая ошибка: необязательно (Error Domain = NSCocoaErrorDomain Code = 3840 «текст JSON не начинался с массива или объекта, и параметр, разрешающий фрагменты, не был установлен." UserInfo={NSDebugDescription=текст JSON не начинался с массива или объекта, и параметр, разрешающий фрагменты, не был установлен.})))
Кажется, что iOS JSONDecoder
способна декодировать фрагменты/типы значений, но версия JSONDecoder
для Mac — нет.