gpt4 book ai didi

ios - 更新 CloudKit 记录,得到 "UITextField.text must be used from main thread only"

转载 作者:搜寻专家 更新时间:2023-11-01 06:31:06 28 4
gpt4 key购买 nike

因此,当我在 tableview 中选择我的记录进行编辑并保存时,只有当我选择不提供 “UITextField.text 必须仅从主线程使用”的记录时,它才会保存

这显示了错误,并且所有 3 个文本字段都使用了相同的所有 true。 Showing the error

有人知道吗?

@IBAction func saveButton(_ sender: Any) {

let predi = NSPredicate(format: "Feil = %@", self.txtFeilF.text!)

Animation.isHidden = false
Animation.startAnimating()

let query2 = CKQuery(recordType: "Feilrapporter", predicate: predi)

publicDataBase2.perform(query2, inZoneWith: nil) { (results, error) in

if error != nil {
print("Error--->" + error.debugDescription)


}else {
if (results?.count)! > 0 {

let records = (results?[0])! as CKRecord

records.setObject(self.txtNameF.text as CKRecordValue?, forKey: "RaportertAv")
records.setObject(self.txtFeilF.text as CKRecordValue?, forKey: "Feil")
records.setObject(self.txtFeilMsgF.text as CKRecordValue?, forKey: "Melding")

self.publicDataBase2.save(records, completionHandler: { (result, error) in
if error != nil {
print("error--->" + error.debugDescription)
}else {
print("Endring Gjort")
}

})
}

DispatchQueue.main.async(execute: {() -> Void in

self.Animation.stopAnimating()
self.Animation.isHidden = true
self.save.isEnabled = false

self.present(self.alertSaveEditData, animated: true, completion: nil)

self.txtNameF.isHidden = true
self.txtFeilF.isHidden = true
self.txtFeilMsgF.isHidden = true

self.txtFeilF.text = ""
self.txtNameF.text = ""
self.txtFeilMsgF.text = ""

self.recFeil = ""
self.recName = ""
self.recMSG = ""
})

}
}
}

最佳答案

发生的情况是您正在另一个无法工作的线程上访问 UITextField。所以在开始 perform 方法之前,您在变量中声明所有内容并在需要时使用它。

更改为:

@IBAction func saveButton(_ sender: Any) {

let predi = NSPredicate(format: "Feil = %@", self.txtFeilF.text!)

Animation.isHidden = false
Animation.startAnimating()

let query2 = CKQuery(recordType: "Feilrapporter", predicate: predi)

let nameF = self.txtNameF.text as CKRecordValue?
let feilF = self.txtFeilF.text as CKRecordValue?
let feilMsgF = self.txtFeilMsgF.text as CKRecordValue?

publicDataBase2.perform(query2, inZoneWith: nil) { (results, error) in

if error != nil {
print("Error--->" + error.debugDescription)


}else {
if (results?.count)! > 0 {

let records = (results?[0])! as CKRecord

records.setObject(nameF, forKey: "RaportertAv")
records.setObject(feilF, forKey: "Feil")
records.setObject(feilMsgF, forKey: "Melding")

self.publicDataBase2.save(records, completionHandler: { (result, error) in
if error != nil {
print("error--->" + error.debugDescription)
}else {
print("Endring Gjort")
}

})
}

DispatchQueue.main.async(execute: {() -> Void in

self.Animation.stopAnimating()
self.Animation.isHidden = true
self.save.isEnabled = false

self.present(self.alertSaveEditData, animated: true, completion: nil)

self.txtNameF.isHidden = true
self.txtFeilF.isHidden = true
self.txtFeilMsgF.isHidden = true

self.txtFeilF.text = ""
self.txtNameF.text = ""
self.txtFeilMsgF.text = ""

self.recFeil = ""
self.recName = ""
self.recMSG = ""
})

}
}
}

关于ios - 更新 CloudKit 记录,得到 "UITextField.text must be used from main thread only",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47166645/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com