这是一个RSS阅读器应用程序。我实例化我的模型对象,调用setupFavIcon()以下载创建对象时为零的favIcon。然后我将每个对象添加到领域。但是,当图标实际上被提取时,self就是零,所以我无法更新应用的UI。我不明白为什么自己变成零。Realm-iOS:模型对象在添加到领域时变为零
class Article: Object {
dynamic var source = ""
dynamic var title = ""
dynamic var link = ""
dynamic var pubDate = Date()
dynamic var favIcon: Data?
dynamic var favIconDidLoad: (() ->())?
func setupFavIcon(_ source: String) {
DownloadManager.sharedInstance.downloadFavIcon(source) { [weak self] icon in
if let icon = icon {
self?.favIcon = icon
self?.favIconDidLoad?()
}
}
}
override class func primaryKey() -> String? {
return "link"
}
override class func ignoredProperties() -> [String] {
return ["favIconDidLoad"]
}
}
Closure favIconDidLoad在我的TableViewCell类中定义,并在下载favIcon时调用。
fileprivate func setupFavIcon(_ article: Article) {
if let favicon = article.favIcon {
setFavIcon(favicon)
} else {
article.favIconDidLoad = { [weak self] in
self?.setFavIcon(article.favIcon)
}
}
}
是的,我的应用程序直接从领域使用数据。现在,我将对象存储在单独的数组中,并且仅在没有Internet连接时才从域中获取数据。现在,favIcons显示正确。谢谢! –