172 похожих чатов

Привет. Вопрос по Decodable Представьте struct A: Decodable, в котором 25

свойств, из них 24 штуки String и декодируются из коробки. А одно Bool, которое в JSON приходит в кавычках “false” и не декодируется. Как выйти из положения не переписывая целую простыню декодирований для всех 24 стрингов?
Может как-то можно переопределить decodeIfPresent для Bool? (У меня не получилось)

17 ответов

11 просмотров
bodich- Автор вопроса

Не понял ответ)

это String «false»

Nazhmeddin Babakhanov 
это String «false»

проста матчинг сделай == чему

bodich- Автор вопроса
Nazhmeddin Babakhanov 
проста матчинг сделай == чему

Где его сделать-то? Надо чтобы Decodable декодировался автоматом. Как обработать строку в бул я-то разберусь))

bodich
Где его сделать-то? Надо чтобы Decodable декодиров...

добавь Decodable get variable типо var boolVal { return «true» == valueFrom } кажется примерно так пишется

bodich- Автор вопроса
Nazhmeddin Babakhanov 
добавь Decodable get variable типо var boolVal {...

Понял, вычисляемое свойство. Это да, но хотелось прямо по красоте без лишнего)

bodich
Понял, вычисляемое свойство. Это да, но хотелось п...

if let value = try values.decodeIfPresent(String.self, forKey: .boolValue) { self.boolValue = «true» == valueFrom } else { self.boolValue = false} тогда так))

bodich- Автор вопроса
Nazhmeddin Babakhanov 
if let value = try values.decodeIfPresent(String.s...

Та это я понимаю, но это надо писать в init, а тогда надо все остальные 24 свойства просто так тоже руками декодировать. Вопрос именно как избежать ручной обработки всех остальных свойств.

bodich- Автор вопроса
Nazhmeddin Babakhanov 
и это можно

Что это и как? Не понял)

может отдельный тип с инитом из singleValueContainer сделать и у него boolValue?

bodich- Автор вопроса
Artëm Balashow
может отдельный тип с инитом из singleValueContain...

Если кому интересно, на стэковерфлоу мне классный варик предложили https://stackoverflow.com/questions/65981840/how-to-decode-single-unusual-property-among-many-decodable-swift/65982070#65982070

bodich
Если кому интересно, на стэковерфлоу мне классный ...

Спасибо :), мне со вчера интересно было....ранее (издревле) тру-вэй был, что есть «объект для сети», и объект для приложения который инициализируются «обьектом для сети» и в этом инициализаторе все преобразования и конвертации время в строки и тд, опять же позволит тестировать «json из сети» если ошибка в нём. Второй вариант более простой, реализовать init(from: decoder) и писать все 24 свойства, это в принципе норм, так как потом ещё какое-то поле тип поменяет, мало ли, или конвертация какая-то. Но так сразу не соображу чем вариант плох (если не нашёл минусов...значит они найдутся позже, в неподходящий момент :) ) И вот сейчас третий вариант с пропертиРапперами: и возможно со временем все 24 свойства будут обёрнуты в «попробуй как-нибудь распарить», вроде удобно, но опять же, надо подумать не о плюсах а возможных минусах

bodich- Автор вопроса
Sergey Sergey
Спасибо :), мне со вчера интересно было....ранее (...

Конкретно в моем случае, не парсятся не сами свойства конкретные, а 2 типа, Bool и Date (куча свойств на этих 2 типах). При этом Decodable моделей, которые вложены друг в друга, в общем свойств огромное кол-во. Это ответ Apple на запрос верификации рецепта AppStore. И как раз тут проще 2 врапера простых написать, чем увеличивать код моделей в 3 раза (не забываем enum), причем в разных моделях один и тот же Bool и Date. Короче будет месиво нечитаемое если писать вручную все init))

bodich
Конкретно в моем случае, не парсятся не сами свойс...

Понятно, у тебя выход из ситуации :) я скорее концептуально стал думать: а если, в будущих приложениях, с самого начала сделать все свойства вот так «обёрнутыми», типа как ДакТайпинг в процессе парсинга )). Как это повлияет...

bodich- Автор вопроса
Sergey Sergey
Понятно, у тебя выход из ситуации :) я скорее конц...

Ну если бы были все свойства такими, то через init проще)

bodich
Ну если бы были все свойства такими, то через init...

Да, более явно....наверное «обертки» в данном случае всё-таки чтобы выручить в какой-то момент.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта