Кто-нибудь знает способ настройки Ma c версии JSONDecoder
так, чтобы она могла decode
фрагменты / значения типов?
Я пишу код Swift, который должен работать как на Ma c, так и на 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. ОДНАКО при запуске "My Ma c" (который находится на Мохаве) из вызова decode
выдается сообщение об ошибке:
Поток 1: фатальная ошибка: 'try!' В выражении неожиданно возникла ошибка: Swift.DecodingError.dataCorrupted (Swift.DecodingError.Context (codingPath: [], debugDescription: «Указанные данные недействительны JSON.», underError: Необязательный (Error Domain = NSCocoaErrorDomain Code = 3840 ») JSON текст не начинался с массива или объекта и опция, позволяющая не устанавливать фрагменты. "UserInfo = {NSDebugDescription = JSON текст не начинался с массива или объекта и опция, позволяющая не устанавливать фрагменты.})))
Кажется, что iOS JSONDecoder
способен декодировать фрагменты / типы значений, но версия JSONDecoder
Ma c не способна.