gpt4 book ai didi

swift - didSet 不适用于变量

转载 作者:搜寻专家 更新时间:2023-11-01 05:33:54 24 4
gpt4 key购买 nike

我正在尝试将数据从我的 cellClass 传递到 viewController。我可以轻松地将标签文本从 cellClass 传递到 vc,但无法在 vc 中设置变量。

这是我的模型类:

class Item: NSObject {

var itemId: String?
var itemLabel: String?
}

这是我的 didSelectItem CellClass 代码:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

if let item = item?[indexPath.item] {
let vc = VC()
vc.presentVC(launcher: vc)
vc.item = item

if let id = item.itemId {
vc.itemId = id
}
}
}

这里,presentVC 是我创建的用于呈现 vc 的扩展。这就是我在我的 ViewController 中写的:

class VC: UIViewController {

var itemId = String()

let itemLabel: UILabel = {
let label = UILabel()
label.text = "TEST TEST TEST"
return label
}()

var item: Item? {
didSet {
itemLabel.text = item?.itemLabel

if let id = item?.itemId {
itemId = id
}
}
}
}

因此,通过这样做,我可以从 cellClass 中获取 itemLabel,但现在已设置 id 并显示 nil。我该如何解决?

最佳答案

所以我以某种方式修复了它!问题是每次我在 didSelectItem 上选择项目时,都会调用 didSet 方法。所以我首先创建了一个这样的方法:

func setupId(item: Item) {

var itemId = String()

if let id = item.itemId {
itemId = id
}

print(itemId)
}

didSet 中,我只是像这样添加了这个函数:

var item: Item? {
didSet {
itemLabel.text = item?.itemLabel
if let item = item {
setupId(item: item)
}
}
}

这几乎就是解决方法!

关于swift - didSet 不适用于变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46367075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com