Возникают проблемы с использованием быстрого протокола для упрощения UIPageViewController:поведение Странной Swift Протокола
У меня есть этот протокол
protocol Pagable {
var pageIndex: Int? { get set }
}
, которые у меня есть все мое UIViewControllers быть представлены UIPageViewController соответствовать.
Тогда в моем UIPageViewController, я делаю это:
var vc = StoryboardScene.Challenges.acceptedViewController() as! Pagable
vc.pageIndex = index
return vc as? UIViewController
, который работает, но то, что я действительно хочу сделать, это:
var vc = StoryboardScene.Challenges.acceptedViewController()
(vc as? Pagable)?.pageIndex = index
return vc
и по какой-то причине, когда я делаю что вместо (который мне кажется абсолютно таким же, как и фрагмент 1), я получаю сообщение об ошибке (vc as? Pagable)?.pageIndex = index
, в котором говорится: «Невозможно назначить неизменяемое выражение типа Int?
».
Я полностью смущен. Хотелось бы узнать некоторое понимание того, почему система типов делает это со мной.
попробуйте 'if let vc = StoryboardScene.Challenges.acceptedViewController() как? Pagable {vc.pageIndex = index; return vc} ' –
Если * все мои UIViewControllers ... соответствуют *, в чем цель использования дополнительных привязок? И почему опция 'pageIndex' необязательна? – vadian
Я понимаю, что я пытался сделать, это не лучшая практика, реорганизованная на лучший способ сделать это (превращение 'pageIndex' в константу и назначение в дочернем VC). Но мне все же хотелось бы понять, почему '(vc as? Pagable) ?. pageIndex = index' не допускается – AndrewSB