Я хочу получить доступ к функции в протоколе, но жалоба XCode
Элемент экземпляра 'createColumns' не может использоваться для типа 'T'; Вы хотели использовать вместо этого значение этого типа?
Что я сделал:
Создание протокола:
protocol StorageModelDelegate {
func createColumns(for tableBuilder: TableBuilder)
}
Создание класса generi c которые получают 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?