Я пытаюсь создать универсальный func
func importArray<T: ImportableUniqueObject>(from exercisesDict: [[String: Any]], transaction: BaseDataTransaction) -> [T] {
if let managedObject = try? transaction.fetchOne(From<T>()){
transaction.delete(managedObject)
}
let managedObjects = try! transaction.importUniqueObjects(
Into<T>(),
sourceArray: jsonObjects)
return managedObjects
}
Так что первая часть работает хорошо:
if let managedObject = try? transaction.fetchOne(From<T>()){
, но вторая не работает:
let managedObjects = try! transaction.importUniqueObjects(
Into<T>(),
sourceArray: jsonObjects)
Компиляторговорит
Cannot convert value of type 'Into<T>' to expected argument type 'Into<_>'
Вот как устроен func:
public func importUniqueObjects<D: ImportableUniqueObject, S: Sequence>(
_ into: Into<D>,
sourceArray: S,
preProcess: @escaping (_ mapping: [D.UniqueIDType: D.ImportSource]) throws -> [D.UniqueIDType: D.ImportSource] = { $0 }) throws -> [D] where S.Iterator.Element == D.ImportSource {