Я использую библиотеку SQLite.swift.
У меня есть несколько Expression
,
let idColumn = Expression<Int>("id")
let nameColumn = Expression<String>("name")
Я хотел бы, чтобы словарь содержал их, поэтому я сделал:
let columns: [String: Expression<AnyObject>] = [
"id": idColumn,
"name": nameColumn
]
Но я получаю ошибку компилятора:
Cannot convert value of type 'Expression<Int>' to expected dictionary value type 'Expression<AnyObject>'
Почему эта ошибка? Почему тип Int
не может быть AnyObject
?
Я также пробовал Any вместо AnyObject
:
let columns: [String: Expression<Any>] = [
"id" : idColumn,
"name": nameColumn
]
Аналогичная ошибка показывает:
Cannot convert value of type 'Expression<Int>' to expected dictionary value type 'Expression<Any>'
Я не понимаю этого... Может кто-нибудь объяснить мне?
Expression<Int>
иExpression<Any>
— это разные типы, и приведение типов не работает с ограниченными универсальными типами. Почему бы вам не объявитьidColumn
иnameColumn
какExpression<Any>
? - person Dávid Pásztor   schedule 15.11.2017cast(_:)
предназначена для. Обобщения в общем случае неизменны. - person Hamish   schedule 15.11.2017