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

Дороу друзья товарищи. Вопрос я такой уже задавал, решил его

с помощью timer, но насколько понимаю это решение не совсем архитектурно верное.

Кейс:
Я переключаюсь между сорсами одного tableView. На каждый клик происходит запрос в сеть и обновление tableView. Если делать это достаточно быстро, происходит коллизия - Т.е. пользователь будет находиться на владке "А", а показываться будет контент из вкладки "Б"

Вопрос: Как этого избежать?

14 ответов

24 просмотра

Для такого рода задач всё что нужно делать, это отменять текущий запрос(если таковой имеется) аккурат перед нажатием переключателя.

Руслан Лутфуллин
Для такого рода задач всё что нужно делать, это от...

И делать соответствующий reload таблица только в том случаи, когда запрос не отменился.

Руслан Лутфуллин
Для такого рода задач всё что нужно делать, это от...

как я понял, дело даже не в запросе, а вообще в моменте переключения. я в соседнем чате уже советовал что нужно вообще не переключать, а иметь две таблицы

Sasha_A
как я понял, дело даже не в запросе, а вообще в мо...

Ну он вроде переключает, идёт подсос данных, и в этот же момент переключается обратно. А в каком-то комплишине первого запроса, несмотря на то, что он больше не актуален, всё равно делается релоад со старыми данными.

Руслан Лутфуллин
Ну он вроде переключает, идёт подсос данных, и в э...

та не, ну это же вообще) или я неверно понял вопрос тогда. просто встречался с ситуацией когда для одной таблицы используют два датасорса (физические его переключают) и в этот моменте - проблема

Михаил Назаров
+

что имелось в виду под data source?) если просто обновить данные в массиве после запроса - это не переключение

Михаил Назаров
+

Тогда смотри, во время запроса, захвати индекс или что-то что определяет текущую вкладку, а в комплишине запроса, сверь это значение с актуальным, если эти значения не совпадают, то данные уже не актуальный и не нужно делать релоад. Если совпали, делай релоад.

Он видимо под переключением назвал нажатие на что-то, что меняет полностью данные, делает запрос и после получения релоад. Типа коллекция с машинами, коллекция с мотоциклами при нажатии, но на том же экране с той же коллекцией или таблицей.

Руслан Лутфуллин
Он видимо под переключением назвал нажатие на что-...

я понял что это один экран, но не ясно, это просто новые данные, или физический ссылка на другой tableView.dataSource = newDataSource

Sasha_A
я понял что это один экран, но не ясно, это просто...

Да это не важно, он просто делает релоад в том комплишине, который уже не актуален 😅

Руслан Лутфуллин
Да это не важно, он просто делает релоад в том ком...

так нет же, может он создает именно несколько разных классов которые реализуют протокол датасорса, или использует diffable data source, с разными типами ячеек, и матчит их коллекцию тут гадать можно бесконечно) но если ты прав - то я просто вопрос не понял

Sasha_A
так нет же, может он создает именно несколько разн...

Меня больше удивляет отсутствие автора вопроса 😂

Михаил-Назаров Автор вопроса

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно 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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта