我已经搜索了其他问题,并且因为找不到适合我的任何东西而问这个问题。
我在核心数据中有一些数据,并希望在调用didSelectRowAtIndexPath
时更新它。这是我的代码
class ViewController: UIViewController, UITableViewDelegate {
var todo = [NSManagedObject]()
var JSON = Data.sharedInstance
@IBOutlet var TableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.JSON.JSONData {
SVProgressHUD.dismiss()
self.TableView.reloadData()
}
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedobject = appDelegate.managedObjectContext
let fetchrequest = NSFetchRequest(entityName: "ToDo")
do {
let results = try managedobject.executeFetchRequest(fetchrequest)
todo = results as! [NSManagedObject]
} catch {
print("error")
}
TableView.reloadData()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return todo.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
let state = todo[indexPath.row].valueForKey("state") as? Float
print(state)
if state == 0.0 {
cell.textLabel?.text = todo[indexPath.row].valueForKey("name") as? String
}
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
}
现在,当didSelectRowAtIndexPath
被调用时,我想更新cellForRowAtIndexPath
到1.0
有人可以请我如何更新“州”的价值。感谢
答案 0 :(得分:0)
创建类似reloadData
的新方法,并移动代码以从viewDidAppear
获取对象。在didSelectRowAtIndexPath
中,执行以下操作:
todo[indexPath.row].updateValue(NSNumber(float: 1.0), forKey: "state") // Sample syntax only. Not sure if it is correct.
managedObjectContext.save()
reloadData()
答案 1 :(得分:0)
我不知道你的模型和Core Data是如何相关的,但是想法是在调用didSelectedRowAtIndexPath
时更新模型,并告诉tableView reloadData()。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Update in todo array.
// Save it, even I don't recommend to save it here,
tableView.reloadData()
}
通常,当应用进入后台时,可以保存数据。或者其他一些不会被不断调用的地方,因为保存将是一项耗资的工作。