這是我的場景...單擊右上角(導航欄)上的加號按鈕,會出現帶有文本框的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