我有一个要观察的名为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?
}