JSONDecoder не может декодировать * значение / фрагмент * типы * Ma c* - PullRequest
0 голосов
/ 07 января 2020

Кто-нибудь знает способ настройки 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 не способна.

1 Ответ

0 голосов
/ 07 января 2020

В Мохаве (как и в iOS 12) и ниже вы не можете.

Ма c JSONDecoder может декодировать фрагменты в Каталине 10.15.1 и выше

...