S
Вопрос: есть некоторая структура объекта. Из Json не всегда приходят все поля этого объекта, например, только имя и путь к картинке. Хотя есть еще поля email и bio. Вопрос собственно в том, как правильно присваивать эти значения и чтобы возвращался экземпляр, а не nil. Потому что если делаю init?(profile: [String: Any]) { guard let .... else { } } - в случае отсутствия хотя бы одного из полей возвращаетяс nil
Stanislav
Так тебе нужен init без вопроса. И при парсинге полей если их нет в JSON'е - ставить их в nil. Тогда у тебя сам объект всегда будет создаваться, а вот поля внутри него заполняться только если они действительно были в JSON'е
S
А парсить так же через guard?
S
Или if let blablabl ?
S
Например self.name = profile["name"] ругается на то, что я Any привожу в String. Требует as! String, но вчера за такое обещали рвать руки )
Stanislav
Можно посмотреть в сторону SwiftyJSON
S
if let {
} else {
}
Anonymous
Anonymous
as? String ?? «default value»
Anonymous
так изначально объект пустой
Anonymous
там нечему оставаться
Anonymous
можно просто as? String, если там optional
S
Return from initializer withour initializing all store properties
S
Ругается
S
В JSON поля name может и не быть
Stanislav
У тебя поля значит все как non optional
Anonymous
Anonymous
или optinal’ы делай
Stanislav
В объекте, в смысле
S
S
Спасибо!
Anonymous
только смотри, при обильном использовании это может замедлить компиляцию
S
А вообще, использование сторонних решений, типа SwiftJSON / Alamofire - это плохая практика?
Anonymous
смотря для чего
Anonymous
для учебных проектов - да
Anonymous
для полноценных рабочих - нет
S
Ну я вроде как учусь и делаю рабочий проект одновременно 😃
Anonymous
ну тогда не используй пока нет необходимости
Евгений З.
Я вчера урок новый записал для новичков
Евгений З.
На тему MVC
Павел
когда я учился меня заставили достать что нужно с помощью AFNetworking и NSURLSession и сравнить )
Anonymous
Евгений З.
Вот в группе в вк https://vk.com/theswiftdevelopers
Евгений З.
Или на ютуб дать
Anonymous
А, это я знаю
Anonymous
Уже состою в группе 😂
Евгений З.
А ну лан)
Firdavs
Евгений З.
Для полноценных если скилов хватает пишут свои
Anonymous
почему?
Почему можно использовать библиотеки в рабочих проектах или что?
Евгений З.
Если нет то юзают чужие либы и все счастливы!
Misha
Евгений З.
Привет
Misha
ну вот и встретились лицом к лицу
Firdavs
Firdavs
хотел спросить почему плохо использовать в полноценных рабочих)
Евгений З.
Брат
Anonymous
Евгений З.
Нет никакой плахой практики
Евгений З.
Писать то что уже написано вот это зашквар
Евгений З.
А вот разобраться что и как работает внутри надо
Anonymous
а потом такие тащат библиотечки в проект на каждые 5 строк
Anonymous
нужно знать меру в использовании сторонних решений
Anonymous
нет смысла тащить AF в каждый проект с сетевыми запросами, например
Павел
критерии есть?
Anonymous
здравый смысл
Евгений З.
Это уже другой вопрос
Евгений З.
Тащат ибо не знают
Павел
хорошо, здравый смысл один на всех есть?
Anonymous
ну и есть одно золотое правило
Евгений З.
О жду золотое правило
Anonymous
если это основная задача твоего приложения — напиши это сам
Евгений З.
Ну а если ты уже знаешь как это все работает и времени очень мало как это часто происходит?)
Павел
ок, а источники этого золотого правила?
Anonymous
статья на медиум была
Anonymous
сейчас вряд ли найду
Anonymous
там это довольно аргументированно расписано
Павел
Мне рассказывали про чела, который не использует либы сторонние и все сам пишет, но там ключевая особенность - ему на это время дают и что важно за это платят
Евгений З.
Да есть рекомендации так то каждый как знает поступает, работодатель может обвинить в джуниорстве и все!)
Евгений З.
Есть люди которые без сотри борда работают это не зашквар по времени?)
Firdavs
Евгений З.
Хай))
Евгений З.
Часто заказчик хочет ещё вчера что б было готово
Misha
Евгений З.
Вот там я посмотрел бы)
Firdavs
Хай))
некоторым легче несколько строчек кода написать, чем что-то перетаскивать
Anonymous
вот еще — « The benefit of dependencies is inversely proportional to the amount of effort spent on a software project.»