使用Swift 2.0我遇到了符合协议的问题。 我尽可能地抛弃了代码来说明问题。符合协议?
protocol Filter {
var filterName:BaseModel {get}
}
protocol BaseModel {
var name: String {get}
}
enum SomeModel: BaseModel {
case Something
var name: String {
switch self {
case .Something:
return "yeah"
}
}
}
struct SomeFilter:Filter {
var filterName:SomeModel
}
有了这个代码,我得到:
类型 'SomeFilter' 既然SomeModel的类型是BaseModel的不符合协议 '过滤器'
(符合BaseModel)这应该工作。如果我在SomeFilter中将var filterName:SomeModel
更改为var filterName:BaseModel
,它当然会起作用,但我无法弄清楚为什么它没有将SomeModel视为BaseModel。
感谢您的支持!直到现在我还没有真正知道Swift中的泛型。我结束了一个稍微不同的解决方案,实际上它更好,但至少我学到了一些东西。 – r0yalty
当然:)从来没有真正的唯一的解决方案,这就是我喜欢的编程,解决了不同部分的难题。 – DevAndArtist
@ r0yalty如果您找到了更好的解决方案,请回答您自己的问题并将其标记为已回答。所以其他程序员也受益。 – Qbyte