Use hash(into…) instead of a hashValue instance variable.

This commit is contained in:
Brent Simmons 2018-12-27 21:07:34 -08:00
parent f5637dc353
commit 142774f5ae
1 changed files with 8 additions and 9 deletions

View File

@ -27,10 +27,7 @@ public struct Article: Hashable {
public let authors: Set<Author>?
public let attachments: Set<Attachment>?
public let status: ArticleStatus
public var hashValue: Int {
return articleID.hashValue
}
public init(accountID: String, articleID: String?, feedID: String, uniqueID: String, title: String?, contentHTML: String?, contentText: String?, url: String?, externalURL: String?, summary: String?, imageURL: String?, bannerImageURL: String?, datePublished: Date?, dateModified: Date?, authors: Set<Author>?, attachments: Set<Attachment>?, status: ArticleStatus) {
self.accountID = accountID
@ -59,20 +56,23 @@ public struct Article: Hashable {
}
public static func calculatedArticleID(feedID: String, uniqueID: String) -> String {
return databaseIDWithString("\(feedID) \(uniqueID)")
}
// MARK: - Hashable
public func hash(into hasher: inout Hasher) {
hasher.combine(articleID)
}
}
public extension Set where Element == Article {
public func articleIDs() -> Set<String> {
return Set<String>(map { $0.articleID })
}
public func unreadArticles() -> Set<Article> {
let articles = self.filter { !$0.status.read }
return Set(articles)
}
@ -80,8 +80,7 @@ public extension Set where Element == Article {
public extension Array where Element == Article {
public func articleIDs() -> [String] {
public func articleIDs() -> [String] {
return map { $0.articleID }
}
}