这是我的场景...单击右上角(导航栏)上的加号按钮,会出现带有文本框的alertview,并添加一些数据在文本框中,然后按OK按钮。这会导致文本字段中的数据显示在tableview中,并且它也存储在核心数据中。更新桌面视图(编辑后)中的条目并显示在桌面视图中的问题
然后当我点击那个现在有来自alertview文本框的数据的行时,我转到另一个视图进行编辑。此viewcontroller
有一个文本字段,其值来自上一个屏幕的行。现在我点击文本框并编辑它的值,然后按右上角的保存。现在,理想情况下,当我按下保存并转到上一个屏幕时,现在应该在tableview中看到编辑的值,而不是旧的值。
但是,当我按下保存并返回到上一个屏幕时,我所做的暂时看到tableviewcontroller
中的更新值。但实际上,该值在核心数据中增加了两次,当我从这个tableview
返回到另一个视图并返回时,我不仅看到编辑前存在的值,而且还看到新编辑的值是加了两次!我无法理解这种行为....
在点击编辑画面此保存按钮是我在做什么...
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "save" {
editedModel = editTextField.text
}
}
在回来的表视图屏幕上,这是我在做什么......(在tableviewcontroller
屏幕)
@IBAction func saveToMainEditViewController (segue:UIStoryboardSegue) {
let detailViewController = segue.source as! EditCategoriesTableViewController
let index = detailViewController.index
let modelString = detailViewController.editedModel //Edited model has the edited string
let myCategory1 = Category(context: self.context)
myCategory1.categoryName = modelString
mangObjArr[index!] = myCategory1
//Saving to CoreData
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Category", in: managedContext)
let category = NSManagedObject(entity: entity!, insertInto: managedContext)
category.setValue(myCategory1.categoryName, forKeyPath: "categoryName")
category.setValue(myCategory1.categoryId, forKey: "categoryId")
do {
try managedContext.save()
} catch let error as NSError {
print("Could not save. \(error), \(error.userInfo)")
}
categoryTableView.reloadData()
}
在的cellForRowAtIndexPath,这是我在做什么...
let cell = tableView.dequeueReusableCell(withIdentifier: "categoryCell", for: indexPath)
let person = mangObjArr[indexPath.row]
cell.textLabel?.text = person.categoryName
return cell
确定.. @雅典娜取代它的名字......所以我在哪里,包括这些行..? –
在这一行let result =尝试managedContext.fetch(fetchRequest),我得到的结果为零。任何想法..? –
是您的managedContext对象是否正确启动?如果是这样,结果为零的提取请求可能意味着没有找到记录。 – Athena