1
使用相關類型的協議,我有問題:從協議類型的Swift associatedType - 如何做到這一點?
protocol Searchable{
func matches(text: String) -> Bool
}
protocol ArticleProtocol: Searchable {
var title: String {get set}
}
extension ArticleProtocol {
func matches(text: String) -> Bool {
return title.containsString(text)
}
}
struct FirstArticle: ArticleProtocol {
var title: String = ""
}
struct SecondArticle: ArticleProtocol {
var title: String = ""
}
protocol SearchResultsProtocol: class {
associatedtype T: Searchable
}
當我試圖實現搜索結果的協議,我得到的編譯問題:
「型SearchArticles不符合協議SearchResultsProtocol」
class SearchArticles: SearchResultsProtocol {
typealias T = ArticleProtocol
}
據我所知,它發生是因爲SearchArticles類中的T不是來自具體類型(該示例中的結構),而是來自協議類型。
有沒有辦法解決這個問題?
提前致謝!
可能的複製[在Swift中無法使用協議作爲其他協議中的關聯類型](http://stackoverflow.com/questions/37360114/unable-to-use-protocol-as-associatedtype-in-another-protocol-in-swift) – Hamish