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()
}
}
}