Swift - Назначение структуры для результата var всегда nil - PullRequest
0 голосов
/ 12 февраля 2020

У меня небольшая проблема с этим простым кодом. У меня есть 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 (проверено отладчиком)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...