"LPMetadataProvider is a one-shot object"。这是什么意思?
"LPMetadataProvider is a one-shot object". what does it mean?
我想使用 LPMetaDataProvider 在 collectionview 单元格中获取 'link previews'。
一切正常。但是每当滚动集合视图和单元格消失(或再次显示)时,我都会收到此错误:
“正在尝试在已经启动的 LPMetadataProvider 上开始获取。LPMetadataProvider 是一次性对象。”有什么想法吗?
var urlString: String?
var previewCell: LinkModel? {
didSet {
urlString = previewCell?.linkURL
fetchPreview()
}
}
let linkPreview = LPLinkView()
let provideer = LPMetadataProvider()
override init(frame: CGRect) {
super.init(frame: frame)
contentView.backgroundColor = .black
}
fileprivate func fetchPreview() {
guard let url = URL(string: urlString ?? "") else {return}
provideer.startFetchingMetadata(for: url) { metaData, error in
guard let data = metaData, error == nil else {
return
}
DispatchQueue.main.async {
self.linkPreview.metadata = data
self.contentView.addSubview(self.linkPreview)
self.linkPreview.frame = (self.contentView.bounds)
}
}
}
如果我调用 'override init' 中的函数,一切正常,但这次它没有从 didset 获取 'urlString'。如果你能帮上忙我会很高兴
使 provider
成为 fetchPreview
中的局部变量。
fileprivate func fetchPreview() {
guard let url = URL(string: urlString ?? "") else { return }
let provideer = LPMetadataProvider()
provider.startFetchingMetadata(for: url) { metaData, error in
...
“one-shot”是指你应该使用一次这个对象,然后把它扔掉。
我想使用 LPMetaDataProvider 在 collectionview 单元格中获取 'link previews'。
一切正常。但是每当滚动集合视图和单元格消失(或再次显示)时,我都会收到此错误:
“正在尝试在已经启动的 LPMetadataProvider 上开始获取。LPMetadataProvider 是一次性对象。”有什么想法吗?
var urlString: String?
var previewCell: LinkModel? {
didSet {
urlString = previewCell?.linkURL
fetchPreview()
}
}
let linkPreview = LPLinkView()
let provideer = LPMetadataProvider()
override init(frame: CGRect) {
super.init(frame: frame)
contentView.backgroundColor = .black
}
fileprivate func fetchPreview() {
guard let url = URL(string: urlString ?? "") else {return}
provideer.startFetchingMetadata(for: url) { metaData, error in
guard let data = metaData, error == nil else {
return
}
DispatchQueue.main.async {
self.linkPreview.metadata = data
self.contentView.addSubview(self.linkPreview)
self.linkPreview.frame = (self.contentView.bounds)
}
}
}
如果我调用 'override init' 中的函数,一切正常,但这次它没有从 didset 获取 'urlString'。如果你能帮上忙我会很高兴
使 provider
成为 fetchPreview
中的局部变量。
fileprivate func fetchPreview() {
guard let url = URL(string: urlString ?? "") else { return }
let provideer = LPMetadataProvider()
provider.startFetchingMetadata(for: url) { metaData, error in
...
“one-shot”是指你应该使用一次这个对象,然后把它扔掉。