Учитывая, что Array
соответствует Codable
Я предполагаю, что массив Codable
, то есть [Codable]
должен быть определенно приведен к Codable
.Я сделал простой пример только с частью Decodable
.И просто для проверки:
// Attempt to conform Array to Decodable
extension Array : Decodable { }
Это вызывает предупреждение: Conformance of 'Array<Element>' to protocol 'Decodable' conflicts with that stated in the type's module 'Swift' and will be ignored; there cannot be more than one conformance, even with different conditional bounds
Это имеет смысл, поскольку Array
уже соответствует Decodable
.
// Totally decodable array
var array: [Decodable] = ["Decodable", "strings"]
// Attempt to cast the decodable array
var decodable: Decodable = array
Это вызывает ошибку компилятора: Value of type [Decodable] does not conform to specified type 'Decodable'
И FixIt: Insert 'as! Decodable'
Применение FixIt вызывает ошибку времени выполнения: Could not cast value of type 'Swift.Array<Swift.Decodable>' (0x11f84dd08) to 'Swift.Decodable' (0x11f84db18).
Я использую Xcode 10 на macOS10.14.
Так что же я здесь не так делаю?
РЕДАКТИРОВАТЬ: Я только что попробовал с Xcode 9.2, и тот же пример работает нормально.Поэтому возникает вопрос, почему это больше не работает на Xcode 10 и что я должен делать вместо этого?Я нигде не могу найти ссылку на это изменение.