私はこのコードを持っています:
DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async {
let url = URL(string: itemImageURL )
let data = try? Data(contentsOf: url!)
if data != nil {
DispatchQueue.main.async{
cell.advImage!.image = UIImage(data: data!)
}
}
}
Swift 3:
「デフォルト」はiOS 8.0で廃止されました:代わりにqos属性を使用してください
最初の行に。
まだ解決策が見つかりません。誰かいますか?
試してくださいqos: DispatchQoS.QoSClass.default
の代わりに priority: DispatchQueue.GlobalQueuePriority.default
DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async {
let url = URL(string: itemImageURL )
let data = try? Data(contentsOf: url!)
if data != nil {
DispatchQueue.main.async{
cell.advImage!.image = UIImage(data: data!)
}
}
}
priorityパラメーターを使用する代わりに:
DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async {
// ...
}
qos
別の列挙型を使用するパラメーターを使用DispatchQoS.QoSClass.default
ただし、その列挙値を.default
:
DispatchQueue.global(qos: .default).async {
// ...
}
Swift 3はGCD(Grand Central Dispatch)に多くの変更をもたらしました。
以下のコードは、Xcode 8.2.1でSwift 3.0についてテストされています
DispatchQueue.global(qos: .background).async {
let img2 = Downloader.downloadImageWithURL(imageURLs[1])
// Background Thread
DispatchQueue.main.async {
// Run UI Updates
self.imageView2.image = img2
}
}
ここで、QoSのプロパティは次のとおりです。
background, utility, `default`, userInitiated, userInteractive and unspecified
詳細は Appleドキュメント を参照してください。
Dispatch Frameworkを使用してプロパティを作成し、関数内のアニメーションでUIを更新している場合、次のようになります。
let queue = DispatchQueue.global(qos: DispatchQoS.QoSClass.default)
// dispatch_after says that it will send this animation every nsec
queue.asyncAfter(deadline: when) {
DispatchQueue.main.async(execute: {
self.animate(withDuration: 0.5, animations: {
self.image.setWidth(35)
self.image.setHeight(35)
})
})
}