JSONDecoder не может декодировать типы *value/fragment* на *Mac*

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


person Oliver Pearmain    schedule 07.01.2020    source источник


Ответы (1)


В Мохаве (как и в iOS 12) и ниже нельзя.

Mac JSONDecoder может декодировать фрагменты в Catalina 10.15.1 и выше

person vadian    schedule 07.01.2020