Пробовал некоторые вещи с помощью Protocl Inheritance в быстром темпе, когда я столкнулся с проблемой, когда он не компилируется, поскольку он утверждает, что «Parent не соответствует BaseParent», хотя я не могу потому что жизнь меня понимает, почему. Вероятно, вернуться к основам момент ... Во всяком случае, вот объяснение и код:Swift Protcol Inheritance Не компилируется
/*
- To conform to 'BaseParent', you must have a var called 'child' that conforms to 'BaseChild'
- 'Child' conforms to 'BaseChild'
- 'Parent' has a property called 'child' which must conform to 'Child' and by extension, 'BaseChild'
- Therefore, any element assigned to 'child', must conform to 'BaseChild'
- Therefore, 'Parent' has a var called 'child' that conforms to 'BaseChild'
- So why does 'Parent' not conform to 'BaseParent'
*/
protocol BaseChild { /* some methods */ }
protocol Child : BaseChild { /* some more methods */ }
protocol BaseParent {
var child : BaseChild! {get set}
}
class Parent : BaseParent {
var child : Child!
}
Вероятно, некоторые из очевидных причин о протоколах, которые я пропускаю, но если кто-нибудь может пойти в детали, я ценящих это :)
Поглотителя ОК, как вы возвращаете объект, который соответствует 'протокола BaseChild', но сеттер Безразлично 't матч. Вы не можете установить какой-либо объект, соответствующий «BaseChild», как ожидалось в «BaseParent», он ожидает, что любой объект будет соответствовать протоколу «Child». – redent84
Конечно, имеет смысл. Добавьте его в качестве ответа, и я приму его, когда это позволит мне. – SeanCAtkinson