无法更新核心数据中保存的数据
Unable to update saved data in core data
我有一个核心数据问题,我无法在 table 视图中更新保存的数据,但我能够将保存的数据传递到目标视图控制器的文本字段,但无法更新它并传递它到以前的视图控制器。我可以在文本字段中进行编辑,但无法更新以前保存数据的 table 视图控制器中的内容。
func Plus(sender: AnyObject) {
if store == nil
{
//get the description of the entity
let storeDescription = NSEntityDescription.entityForName("Store",inManagedObjectContext: appdelegate.managedObjectContext)
//we create managed object to be inserted to core data
let store = EventsandnotesStore(entity : storeDescription!,insertIntoManagedObjectContext:appdelegate.managedObjectContext)
store.sName = name.text
store.sDescription = desc.text
let img = UIImage(named: "image.jpg")
let imgData = UIImageJPEGRepresentation(img!,1)
store.sImage = imgData
do {
try appdelegate.managedObjectContext.save()
self.navigationController?.popViewControllerAnimated(true)
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}
你可以做以下两件事之一
实施委托模式以将更新的信息传回您的原始视图控制器。然后您可以手动更新 tableView 的数据源。
或者您可以使用 NSFetchedResultsController as the dataSource for your tableView and implement its delegate 函数。这使您能够通知您的 tableView 核心数据已更新。
我推荐后者,设置起来会多一些工作,但会更轻松。
我有一个核心数据问题,我无法在 table 视图中更新保存的数据,但我能够将保存的数据传递到目标视图控制器的文本字段,但无法更新它并传递它到以前的视图控制器。我可以在文本字段中进行编辑,但无法更新以前保存数据的 table 视图控制器中的内容。
func Plus(sender: AnyObject) {
if store == nil
{
//get the description of the entity
let storeDescription = NSEntityDescription.entityForName("Store",inManagedObjectContext: appdelegate.managedObjectContext)
//we create managed object to be inserted to core data
let store = EventsandnotesStore(entity : storeDescription!,insertIntoManagedObjectContext:appdelegate.managedObjectContext)
store.sName = name.text
store.sDescription = desc.text
let img = UIImage(named: "image.jpg")
let imgData = UIImageJPEGRepresentation(img!,1)
store.sImage = imgData
do {
try appdelegate.managedObjectContext.save()
self.navigationController?.popViewControllerAnimated(true)
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}
你可以做以下两件事之一
实施委托模式以将更新的信息传回您的原始视图控制器。然后您可以手动更新 tableView 的数据源。
或者您可以使用 NSFetchedResultsController as the dataSource for your tableView and implement its delegate 函数。这使您能够通知您的 tableView 核心数据已更新。
我推荐后者,设置起来会多一些工作,但会更轻松。