Контекст:
1 - протокол SQLObject объявляет различные функции.(Я использую FMDB для доступа к БД)
protocol SQLObject {
static var tableName: String { get}
init(result: FMResultSet) throws
...
}
2 - Некоторые структуры, соответствующие протоколу SQLObject , реализующие необходимые функции
struct Foo : SQLObject {
// All protocol functions implemented - No red, no yellow here :)
}
3 - Глобальныйв моем приложении определен диспетчер данных, чтобы пробуждать объекты из базы данных
class DataManager {
static let shared = DataManager()
func storedObjects<T: SQLObject>(_ type: T) throws -> [T] {
// This basically does a SELECT * and returns objects of the given type
// This is also error and warning free
}
}
Проблема:
Я хочу десериализовать свои объекты из любой точки приложения
let foos = try DataManager.shared.storedObjects(Foo)
При сборке я получил ошибку:
Тип аргумента '(Foo) .Type' не соответствует ожидаемому типу 'SQLObject'
Тамя здесь скучаю, поскольку Foo реализует протокол SQLObject.Любое объяснение, кодирование товарищей?