В чем разница между вводом String () и String.self в swift? - PullRequest
0 голосов
/ 01 октября 2018

Я застрял, пытаясь понять .self в быстром, всегда я регистрирую пользовательскую ячейку в collectionView или tableView, я должен зарегистрироваться как customCollectionViewCell.self, но почему бы, например, customCollectionViewCell()?

Я пытался на игровой площадке набрать String.self в переменной, чтобы увидеть, что происходит, и это не дает мне ошибок, но когда я пытаюсь дать ему значение, я получаю следующую ошибку

Невозможно присвоить значение типа 'String' типу String.Type

что это значит?

1 Ответ

0 голосов
/ 01 октября 2018

Type() является сокращенной записью для Type.init(), поэтому String() вызывает String.init() и, следовательно, инициализирует String.

С другой стороны, String.self возвращает мета-тип String, который представляет собой тип, который представляет сам тип String, а не какой-либо экземпляр этого типа.Для получения дополнительной информации о метатипах см. Раздел Тип метатипа официальной ссылки на язык Swift.

В вашем конкретном примере вам нужно зарегистрировать тип подкласса UITableViewCell, а не экземпляропределенного типа, поэтому вам нужно использовать YourCellType.self.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...