我知道这个问题的标题不正确。但我无法想出更好的头衔,如果有人建议更好的头衔,我会修改。
以下是问题:
我有一个协议,
import Foundation
protocol MyFilter {
var currentlySelected : Bool { get set }
func configure<T> (filterInfo : T) where T: MyGenericDataModel
}
这要求所有确认类声明一个名为currentSelected的变量,并且还期望编写一个方法,该方法接受一个确认MyGenericDataModel协议的参数。
MyGenericDataModel看起来像,
import Foundation
protocol MyGenericDataModel {
init(data : JSON)
}
有多个类确认MyGenericDataModel。像,
struct MyDataModel1 : MyGenericDataModel {
var id : String? = nil
//other properties
init(data : JSON) {
}
}
struct MyDataModel2 : MyGenericDataModel {
var id : String? = nil
//other properties
init(data : JSON) {
}
}
等等。
现在我获得了可以是任何自定义数据模型的数据数组。所以我声明了一个对象数组,它们确认了MyGenericDataModel协议。
var passedDataSource: Array< MyGenericDataModel>? = nil
现在我需要调用MyFilter的方法,
let filterInfo = passedDataSource![indexPath.row]
abcd.configure(filterInfo: filterInfoToPass)
abcd显然向MyFilter确认了为什么我可以调用configure。
问题
Xcode提供编译错误,
无法使用类型'的参数列表调用'configure'(filterInfo: MyGenericDataModel)
修改
根据luk2302的评论,我发布了abcd类的实现细节:)
class MyCellClass: UICollectionViewCell, MyFilter{
var currentlySelected : Bool = false
func configure<T>(filterInfo: T) where T : MyGenericDataModel {
//use filter info
//perform some UI operations to update cell UI
}
}
请帮忙。提前谢谢。