Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将键值观测(KVO)与集合一起使用_Objective C_Swift - Fatal编程技术网

Objective c 将键值观测(KVO)与集合一起使用

Objective c 将键值观测(KVO)与集合一起使用,objective-c,swift,Objective C,Swift,我想观察一个名为savedArticles的属性。现在,它被声明为控制器类型对象的属性集,如下所示: @objc dynamic var savedArticles: Set<Article> = [] KVO可观测集是一个非常糟糕的想法,但链接中的讨论将阐明这一点。最好向我们解释一下您真正想解决的问题。@matt谢谢您的反馈。很抱歉这篇文章写得不好。如果你有时间,我想听听你的建议。我有一个名为ArticleController的类。在这个类中,我有一个名为savedArticle

我想观察一个名为
savedArticles
的属性。现在,它被声明为控制器类型对象的属性集,如下所示:

@objc dynamic var savedArticles: Set<Article> = []

KVO可观测集是一个非常糟糕的想法,但链接中的讨论将阐明这一点。最好向我们解释一下您真正想解决的问题。@matt谢谢您的反馈。很抱歉这篇文章写得不好。如果你有时间,我想听听你的建议。我有一个名为
ArticleController
的类。在这个类中,我有一个名为
savedArticles
(集合)的属性。名为
SavedArticlesTableViewController
的视图控制器希望了解保存新项目的任何时间,以便刷新其表。我想我可以通过发送一个简单的通知来实现这一点。因此,我观察到对
savedArticles
的任何更改,我的观察者(表视图)会重新加载自己。那么为什么不使用setter观察者呢?你需要KVO做什么?或者为什么不将变量设置为私有,并将setter设置为公共?谢谢。我才意识到你是谁,我只想说我喜欢你的书。我预定了深入亚马逊的Ios13。
class Article: Hashable {
    static func == (lhs: Article, rhs: Article) -> Bool {
        return lhs.title == rhs.title && lhs.date == rhs.date && lhs.author == rhs.author
    }
    func hash(into hasher: inout Hasher) {
        title.hash(into: &hasher)
        date.hash(into: &hasher)
        author.hash(into: &hasher)
    }

    var title: String?
    var author: String?
    var description: String?
    var date: String?
}