结合使用键值观察(KVO)

时间:2019-12-24 03:00:26

标签: objective-c swift

我有一个要观察的名为savedArticles的属性。到目前为止,已将其声明为Set作为Controller类型对象的属性,如下所示:

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

这不起作用,因为“由于无法在Objective-C中表示类型,因此无法标记@objc”。

我应该如何更改savedArticles,以便它仍可以用作集合但也可以观察?

我的第一个想法是将属性的类型更改为NSSet,但是我无法设法使它正常工作,甚至不知道这是否是正确的方法。使用这种方法,我不得不手动为Article实现Hashable协议。我是这样做的

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?
}

0 个答案:

没有答案