【发布时间】:2020-06-01 02:40:34
【问题描述】:
我想访问协议中的函数,但是 XCode 投诉
实例成员“createColumns”不能用于类型“T”;你是否 意思是改用这种类型的值?
我做了什么:
创建协议:
protocol StorageModelDelegate {
func createColumns(for tableBuilder: TableBuilder)
}
创建接收 StorageModelDelegate 的类泛型:
class SQLiteStorage<T: StorageModelDelegate> {
func createTable(tableName: TableKey) -> Bool {
let table = Table(tableName.rawValue)
let query = table.create(ifNotExists: true) { (builder: TableBuilder) in
T.createColumns(for: builder) // -> this is the error comes up.
}
}
}
创建实现 SQLiteStorage 的类:
final class InfoStorageModel {
private let sqlite: SQLiteStorage = SQLiteStorage<Info>()
}
那么,如何修复 SQLiteStorage 类中的错误?
【问题讨论】:
标签: ios swift xcode generics protocols