使用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