在使用NSAttributedString更新UI前,需要确保在主线程中更新UI。如果在后台线程更新,将会出现“AttributeGraph precondition failure: setting value during update when using NSAttributedString”的错误。
下面是一个示例代码,它将文本更新放在了dispatch队列中,从而导致了上述错误:
DispatchQueue.global(qos: .background).async {
let string = NSAttributedString(string: "Hello World!")
DispatchQueue.main.async {
self.label.attributedText = string
}
}
正确的做法是把更新操作放在dispatch队列中,确保在主线程中执行更新操作:
DispatchQueue.main.async {
let string = NSAttributedString(string: "Hello World!")
self.label.attributedText = string
}