0
我正在使用UITableViewCell內嵌的UISWitch更新一些Core Data條目。UISwitch粘在UITableViewCell中
當開關切換時,我需要它來刷新表格,儘管在那一刻UISwitch只停留在它的位置。
我懷疑這是與我使用的模型有關嗎?下面是來自UITableVIewCell的代碼,其中我更新了Core Data條目,然後使用tableview引用,嘗試在表上重新加載數據。 UI不會重新加載,除非我退出視圖並返回,所以我知道Core Data實體正在被正確更新。
我懷疑這是因爲我的surveyQuestionReference總是設置爲相同的值?
class SurveyQuestionTableViewCell: UITableViewCell {
let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
@IBOutlet weak var lblQuestion: UILabel!
@IBOutlet weak var toggQuestion: UISwitch!
var surveyQuestionReference : SurveyQuestion?
var tableViewReference : UITableView?
@IBAction func toggledQuestion(sender: AnyObject) {
let tempContext: NSManagedObjectContext = NSManagedObjectContext(concurrencyType: .PrivateQueueConcurrencyType)
tempContext.parentContext = self.managedObjectContext
tempContext.performBlock({
let entityName = "CoreDataObject"
let request = NSFetchRequest(entityName: entityName)
request.predicate = NSPredicate(format: "workId = %@", self.surveyQuestionReference!.workId)
do {
let results = try tempContext.executeFetchRequest(request) as? [NSManagedObject]
if results!.count > 0{
if let moc = self.managedObjectContext{
moc.performBlockAndWait({
[unowned self] in
for result in results!{
result.setValue(self.toggQuestion.on, forKey: (self.surveyQuestionReference?.property)!)
}
})
}
}
do {
try tempContext.save()
} catch let error {
print(error)
}
}catch{
print("error")
}
})
print(sender)
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
// load data
dispatch_async(dispatch_get_main_queue()) {
// update ui
self.tableViewReference!.reloadData()
}
}
}