ios - Swift 的对象属性观察器

标签 ios swift properties didset

我正在尝试在我的类 ChooserListVC 中为“列表”添加一个属性观察器

这些是我想要跟踪的 ChooserSaves 中的变量。

class ChooserSaves: UIDocument {
var savedListObject : SavedList?
var listName : String = ""
var chooserItems : [String] = []
}

我不确定如何在我正在实现它的类中设置它。

class ChooserListVC: UIViewController, UITableViewDelegate, UITableViewDataSource,UITextFieldDelegate{
var list : ChooserSaves!

我试着做这样的事情:

var list : ChooserSaves!{
    didSet{
        if chooserItems.count > 0{
            println("didset greater than 1")
        }
        else{
            println("didset less than 1")
        }
    }
}

但这只在 segue 分配列表时有效一次。我怎样才能做到每次在其他代码位中更改 list.chooserItems 时,它都会触发正确的行?

最佳答案

最简单的解决方案是将您想要观察的属性设置为私有(private),并创建公开可用的方法来操作您的数组。

...
private var chooserItems: [String] = []
...
func add(chooserItem: String){
    // your tracking logic here

    // update your private array
    self.chooserItems.append(chooserItem)
    ...
}
...

如果您需要真正的观察,我建议您查看这个答案 Is key-value observation (KVO) available in Swift?

关于ios - Swift 的对象属性观察器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32060152/

相关文章:

ios - 使用remoteControlReceived控制音乐时遇到问题

ios - 如何设置不同的 UITableViewCell 样式?

java - 处理列表中对象的属性?

powershell - 从两个对象创建对象的最佳方式

ios - 如何在 ViewDidLoad( ) 之外使用变量 - Swift

带有谷歌地图的 iOS

android - 尝试将 iOS 应用程序移植到 Android 时出错

swift - Cocoapod 之后 Swift 中没有这样的模块错误

java - 无法访问 Spring Boot 应用程序中的属性

ios - prefersHomeIndicatorAutoHidden 不适用于 iPhone X