@ios_ru

Страница 722 из 2351
Vladislavs
25.03.2017
19:07:30
но мой вопрос про каст ячейки без ворнинга в обджс актуален

Vadim
25.03.2017
19:07:38
Такие вещи не проходят в продакшн

Vladislavs
25.03.2017
19:07:59
А то что другой тип ячейки, отличный от ожидаемого, норм?
приоритеты расставляй, юзер увидет пустую UITableViewCell или увидет экран меню

Vadim
25.03.2017
19:08:16
у юзера вообще не должно возникнуть такой ситуации

Google
Vladislavs
25.03.2017
19:08:25
или тебя с крашем и fatalError в продакшн пускают?)

Alexander
25.03.2017
19:08:52
так нужна конкретная ячейка

а не пустая

Vadim
25.03.2017
19:08:57
Еще раз, такие вещи ВСЕГДА отлавливаются на этапе разработки

Ты блин делаешь таблицу

С одним типом

Как он вообще может не совпасть

Vladislavs
25.03.2017
19:09:13
@alfredzien Мой вопрос все еще актуален

Vadim
25.03.2017
19:09:56
Плюс с гардом я еще некоторое время могу недоумевать, почему ячейки пустые. А если краш, то сразу понятно, что с типом ошибся

Поправил и все, больше оно ни при каких условиях не вылетит

Vladislavs
25.03.2017
19:10:29
делается просто

какой гард

Vadim
25.03.2017
19:10:54
А с if let дополнительный уровень вложенности, это уж точно ужас

Google
Vladislavs
25.03.2017
19:11:00
let cell = dequeReusable... if let cell = cell as? ZaloopaCell { ... } return cell

вложеность видишь ты

а не юзер

Vadim
25.03.2017
19:11:30
да вообще весь код вижу я, а не юзер, что уж там

а потом пишут по 5 вложенных ифов

смотреть больно

Vladislavs
25.03.2017
19:12:45
а мне больно смотреть

когда кто-то за тебя подумал и решил

что почему-то это optional

а ты ему суешь !

и думаешь что самый умный

Vadim
25.03.2017
19:13:17
блять

логично, что dequeue может ячейку не вернуть

или не ту

Vladislavs
25.03.2017
19:13:27
ладно, мне на мой вопрос не ответят

я пошел

Vadim
25.03.2017
19:13:38
и это должно обрабатываться разработчиком

это не зависит от каких-то внешних условий

поэтому форс каст там - это нормально

Alex
25.03.2017
19:14:16
поэтому форс каст там - это нормально
форс каст никогда не нормально

Google
Vadim
25.03.2017
19:15:08
я про dequeue

Vladislavs
25.03.2017
19:15:44
не совсем понял
SomeCell *cell = dequeReusable...; Ты просто предлагаешь обернуть в SomeCell *cell = (SomeCell*) dequeReusable...; ?

Alfred
25.03.2017
19:16:58
я про dequeue
у меня 9 строчек, что я делаю не так?

Vadim
25.03.2017
19:17:04
Еще

раз

я про строчку с dequeueReusableCell

она ДЛИННАЯ

И с гардом она ОЧЕНЬ длинная

без каких-то преимуществ

Vadim
25.03.2017
19:17:44
и смысла

Alfred
25.03.2017
19:17:53
лол, а что, let a = tralala отменили?

в свифте тоже есть способ кастануть опционально.

Vladislavs
25.03.2017
19:18:44
kindOf, memberOf, да.

Только я про ворнинг

Alfred
25.03.2017
19:19:01
kindOf, memberOf, да.
ну вот после проверки кастуешь

а какой ворнинг?

Google
Vladislavs
25.03.2017
19:19:11
а ворнинг куда денется?)

желтая херня в икскоде

Vadim
25.03.2017
19:19:19
сравни let cell = tableView.dequeueReusableCell(withIdentifier: "**Cell", for: indexPath) as! ***TableViewCell и guard let cell = tableView.dequeueReusableCell(withIdentifier: "***Cell", for: indexPath) as? ***TableViewCell else { return UITableViewCell() }

Alfred
25.03.2017
19:19:32
желтая херня в икскоде
У меня ворнинги включены как ерроры, поэтому у меня нет их :(

скажи как называется

Vladislavs
25.03.2017
19:19:55
найду обджс проект сейчас, скажу

Vadim
25.03.2017
19:21:49
я умею, лол

только толку от 2 варианта никакого

Admin
ERROR: S client not available

Vadim
25.03.2017
19:22:14
Какие-нибудь аргументы против форс каста ячеек кроме "ууу это плохо" будут?

Alfred
25.03.2017
19:24:05
let identifier = "MyAwesomeIdentifier" let cell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) let castedCell = cell as MyAwesomeCell guard let mycell = casteCell else { return whatever }

если for: перенести на другую строку то даже в 80 символов вмещается.

Vadim
25.03.2017
19:25:50
let identifier = "MyAwesomeIdentifier" let cell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) let castedCell = cell as MyAwesomeCell guard let mycell = casteCell else { return whatever }
Итак, одна строка превращается в 3, а при какой-нибудь ошибке в регистрации ячеек ячейки почему-то становятся пустыми, вместо того, чтобы программа просто брякнулась на строке с получением ячейки. И зачем?

Vladislavs
25.03.2017
19:26:21
ох, я сегодня узнал, что обджс не срет ворнинги на такое: DoctorsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"DoctorsTableViewCell" forIndexPath:indexPath];

Alex
25.03.2017
19:26:59
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CellClass.className(), for: indexPath) as? CellClass else { return UICollectionViewCell() }

Google
Vadim
25.03.2017
19:27:03
Alex
25.03.2017
19:27:10
extension UICollectionViewCell { static func className() -> String { return String(describing: self) } }

Vadim
25.03.2017
19:27:15
примерно такой

без className

Alex
25.03.2017
19:27:34
соль в идентифаере

Vadim
25.03.2017
19:28:49
Просто я не вижу смысла в каком-то ином поведении при ошибке касте ячейки, кроме как краш. Может кто-нибудь объяснит? Как такое вообще может выйти в прод, ведь все эти вещи устанавливаются один-два раза за время разработки какой-нибудь таблицы или коллекции?

Alfred
25.03.2017
19:29:50
ох, я сегодня узнал, что обджс не срет ворнинги на такое: DoctorsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"DoctorsTableViewCell" forIndexPath:indexPath];
Потому что - (__kindof UICollectionViewCell *)dequeueReusableCellWithReuseIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath;

Vadim
25.03.2017
19:29:54
Выставляется идентификатор, регается ячейка с этим идентификатором, и та самая строка с dequeue. И это все не меняется. А если и меняется, то все сразу. И логично, если ты забыл что-то поменять, то приложение должно вылететь

Ты видишь вылет, и такой сразу "о, точно" и пошел поменял что забыл

И все

Все счастливы

Vadim
25.03.2017
19:30:50
Ну тогда согласен

Vladislavs
25.03.2017
19:30:53
Vadim
25.03.2017
19:30:59
Но если это центр какого-нибудь контроллера

То там все так, как я описал

И там форс каст это не гроб-гроб кладбище

а вполне разумно

Alfred
25.03.2017
19:31:25
Так это не downcast же, что бы без ворнинга было
Да, из-за такого объявления даункаст не нужен

Так объявлена декью. Я правда для collectionView скинул, но там тоже самое.

Страница 722 из 2351