如何更新核心数据中的对象?
Posted
技术标签:
【中文标题】如何更新核心数据中的对象?【英文标题】:How to update objects in core data? 【发布时间】:2016-09-27 08:45:35 【问题描述】:我想更新我的核心数据实体,我的代码是:
let ff: Cart!
let indexPath = self.tableView?.indexPathForSelectedRow
ff = self.cart[indexPath!.row]
let app = UIApplication.sharedApplication().delegate as! AppDelegate
let context = app.managedObjectContext
let entity = NSEntityDescription.entityForName("Cart", inManagedObjectContext: context)
let cartt = Cart(entity: entity!, insertIntoManagedObjectContext: context)
cartt.name = ff.name
cartt.price = Double(ff.price!)
cartt.rest_id = ff.rest_id
cartt.longg = ff.longg
cartt.latt = ff.latt
cartt.item_id = ff.item_id
cartt.restName = ff.restName
cartt.cookTime = ff.cookTime
ff.setValue(Int(txt.text!), forKey: "quantity")
do
try context.save()
self.viewDidLoad()
print(cartt.longg)
print(cartt.delivery)
print("saved")
catch
print("could not save")
核心数据中的元素正在更新,但它也在向我的tableView
添加一个新行,其中包含一个空数据。
【问题讨论】:
保存数据后为什么打电话给self.viewDidLoad()
?
重新计算购物车
您只想更新quantity
值,对吧?
是的@Chetankasundra
【参考方案1】:
如果您想更新当前对象 ff
的 quantity
,请尝试使用这些行。
let ff: Cart!
let indexPath = self.tableView?.indexPathForSelectedRow
ff = self.cart[indexPath!.row]
let app = UIApplication.sharedApplication().delegate as! AppDelegate
let context = app.managedObjectContext
ff.setValue(Int(txt.text!), forKey: "quantity")
do
try context.save()
self.viewDidLoad() // why you call this line here ?
print(cartt.longg)
print(cartt.delivery)
print("saved")
catch
print("could not save")
你为什么打电话给self.viewDidLoad()
?
在您的下一个代码中,您正在创建一个新项目,而不仅仅是更新当前项目。
【讨论】:
用零钱乘以价格再次计算购物车 好的,它现在可以工作了,但是当它改变时我需要更新视图 好的,完美! ;) 但是不建议直接调用viewDidLoad:
可能你应该重构一下以上是关于如何更新核心数据中的对象?的主要内容,如果未能解决你的问题,请参考以下文章
核心数据 - 实例变量更新中的 NSManagedObjects