2017-02-15 5 views
0

Я изучил этот вопрос без конца, но продолжаю бороться. Я видел следующий код, написанный как: cell.textLabel? .text при создании ячеек. Почему есть вопросительный знак только на textLabel, а не на тексте?Стол для просмотра таблицы Опционально - быстрый

В соответствии с яблочными документами textLabel является необязательным свойством типа UILabel, а текст является необязательной строкой, но мы используем только один знак вопроса? Почему бы не задать два вопроса, по одному для каждого необязательного?

+0

Для чего это язык? Swift? – GrandMasterFlush

+0

Да быстрый язык – TDG

+0

'textLabel? .text' означает, что он проверяет, является ли' textLabel' 'nil' или нет. Если это 'nil', не переходите к' .text', а если это не 'nil', переходите к' .text'. Это применимо везде – SahyadriChava

ответ

0

textLabelUITableViewCell не является обязательным, так как этикетка может отсутствовать при использовании пользовательских.

Если вы используете стандартную ячейку с одним из 4 предустановленных стилей textLabel гарантированно существует, и вы можете смело разворачивать дополнительный: cell.textLabel!.text

Чтобы ответить на этот вопрос первый знак вопроса требуется для Optional Chaining, любой необязательно, за исключением последнего элемента в цепочке (foo.bar.baz), должен быть помечен как дополнительный или развернутый. В случае последнего элемента компилятор может «согласовать» соответствие типа непосредственно с элементом через знак равенства.

Смежные вопросы