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"]
}
}
閉鎖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)
}
}
}
はい、私のアプリはレルムから直接データを使用していました。今は別の配列にオブジェクトを格納し、インターネットに接続していないときにのみ領域からデータを取得します。今、favIconが適切に表示されます。ありがとう! –