У меня небольшая проблема с этим простым кодом. У меня есть var selectedItem типа MyStruct , который всегда nil
У меня есть этот класс
class Test: UIViewController {
var selectedItem: MyStruct?
var collectionData: [OtherStruct]
....
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
selectedItem = collectionData[indexPath.row].item
}
Тогда выбранный элемент всегда равен нулю.
struct OtherStruct {
var item: MyStruct
.....
.....
init(item: MyStruct) {
self.item = item
}
}
struct MyStruct: Codable {
var test: String
init(from decoder: Decoder) throws {
...
}
}
Моя переменная selectedItem всегда равна нулю. Почему?
, если я делаю
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let localeSelectedItem = collectionData[indexPath.row].item
}
localeSelectedItem не nil и имеет тип MyStruct.
EDIT Если я изменяю
var selectedItem: MyStruct?
до
var selectedItem: Any?
, а затем я делаю
if let item = selectedItem as? MyStruct {
}
работает
Обратите внимание, что collectionData [indexPath.row] .item имеет тип MyStruct (проверено отладчиком)