Смотрите, у меня нет четкого ответа на ваш вопрос. У меня лишь есть направления в которых надо двигаться.
- как я уже говорил, считать ширину слов и дальше продумывать и писать логику разбиения (самому придумывать и продумывать)
- если у вас СвифтЮАй, то можно попытаться еще такой подход (понятия не имею сработает ли он) - заменить объект в котором выводится эта ваша строка, на несколько объектов, в которых будут выводиться закрепленные за этими объектами части вашей строки(рейтинг + год, кол-во сезонов, тип, страна + возрастной ценз... - комбинируйте их как хотите). А уже СвифтЮАю вы должны задать правила (я хз как) про то что две строки и те объекты что не влазят в первую переносятся на вторую.
Ага, знакомая ошибка. Она означает, что компилятор не понимает какой тип вернет некая операция.
Подозреваю, что это про compactMap.
Надо толи result привести к нужному типу, то ли прописать as где-то, то ли явно указать возвращаемый тип в compactMap.
Извините, но точнее я не смогу ответить. Сложно воображаемо это делать
Поищите в инете "swift ambiguous without more context"
Это не мое желание. Это свифтовая конструкция.
Если вы заметили, то там не оператор сравнение, а оператор присвоения: if let letData = data - пытается присвоить новой константе данные и проверяет удалось ли это - не nil ли результат. Если не nil то идем по true варианту.
По скриншоту - вы делаете force-unwrap на uuid, и скорее всего там и падает с ошибкой "Ай-яй-яй! У нас nil, а должно быть не nil!".... Хотя, я вижу, что перед этим вы выводите его на печать....Надо смотреть что на брекпоинте там покажет.
Запомните - force-unwrap это ПЛОХО!!! Тем более, когда разбираете данные пришедшие по сети. , Используйте guard.
Совет: перепишите compactMap - чтобы внутри блока вы вначале присваивали нужные вам данные внутренней переменной, и уже затем эту переменную присваивали вьюмодельке...( Наверное непонятно написал :( ...Стукните в телегу, попытаюсь понятнее рассказать.)
Это для того, чтобы брекпоинтами отдебажить и отловить в где ошибка.
Добрый вечер. Если я правильно понимаю вопрос, то использовать failable initializer правильный подход тут.
В таком инициалайзере описываете логику при которой этот инициалайзер вернет нил и потом отсеиваете такие элементы.
В чем именно была проблема с таким подходом?
Андрей, Отлично )) В терминах разобрались. По вопросу - вас интересует чтобы не все 27 объектов превращались во вью-модельки или вы переживали что - не видимые ячейки рендерятся и занимают память?
Я к чему веду - принимаете мой ответ как "ответ"? ))
Андрей, бессмертная фраза - "давайте договоримся о терминах" )))))
Под "ячейками" вы понимаете объекты класса NewsTableViewCellViewModel или UI элементы?
Я - второе. Потому что первое - это вью-модельки.
Поставив брекпоинт внутри метода cellForRowAt - сколько раз он у вас сработает при загрузке этого экрана? Если 27 - то тогда ваша правда, и надо разбираться. Если 2-3 - то тогда моя.
Допустим, у вас на экран, визуально, влазит 5 ячеек таблицы. Это значит, что система загрузит в память и отрендерит только 6 ячеек. Почему 6? Потому что при скроле на пол ячейки вниз должно отобразить половинку 6-й, а значит она должна быть загружена.
Когда вы проскролили на одну ячейку вниз - первая освобождается от данных и переиспользуется для отображения 7-й ячейки. (по этому метод и называется "dequeueReusableCell" - вытащить из очереди переиспользуемую ячейку)
И так далее и тому подобное.
Если же у вас на экран визуально помещается 27 ячеек, то тогда да - все они будут загружены в память.
Если же я все еще не понял и не ответил на ваш вопрос - уточните его пожалуйста.
Андрей, у вас на сториборде таблица имеет сколько видимых ячеек? 27? Если да то уменьшите кол-во видимых до нужного вам кол-ва.
Если меньше чем 27 - то она подгружает не 27, а столько сколько видимо на экране.
- как я уже говорил, считать ширину слов и дальше продумывать и писать логику разбиения (самому придумывать и продумывать)
- если у вас СвифтЮАй, то можно попытаться еще такой подход (понятия не имею сработает ли он) - заменить объект в котором выводится эта ваша строка, на несколько объектов, в которых будут выводиться закрепленные за этими объектами части вашей строки(рейтинг + год, кол-во сезонов, тип, страна + возрастной ценз... - комбинируйте их как хотите). А уже СвифтЮАю вы должны задать правила (я хз как) про то что две строки и те объекты что не влазят в первую переносятся на вторую.