GameKit и Swift: свойство instance не является обязательным, но может иметь значение nil? - PullRequest
0 голосов
/ 21 сентября 2018

GKTurnBasedParticipant имеет свойство: player, которое имеет класс GKPlayer.Объявление записывается в виде:

var player: GKPlayer { get }

Тем не менее, в документации API говорится:

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

Так что, если это может быть nil, почему не объявление:

var player: GKPlayer?

Что я не понимаю здесь?Это что-то с геттером?Это действительно важно, потому что игрок должен иметь значение nil для автоматических игр, в которые еще должен присоединиться второй игрок.

Когда я делаю условное развертывание (после перехода на Swift 4.2)

if let onlineGKPlayer = participant.player {

теперь это ошибка компилятора:

Инициализатор для условного связывания должен иметь необязательный тип, а не 'GKPlayer'

Screenshot from GKTurnBasedParticipant player

https://developer.apple.com/documentation/gamekit/gkturnbasedparticipant/1521037-player

...