1
我正在學習如何使用CoreData並面臨以下問題。該行的CoreData更新導致插入空白行
我已經創建了這個函數,它應該更新現有的行或插入新的行。但是,當我試圖更新現有的應用程序時,應用程序會插入空白行。
這是我的代碼部分:
func saveSettingToDatabase()
{
guard settingNameLabel.text != nil else {return}
let context = AppDelegate.viewContext
let tableContext = SettingsTable(context: context)
// Get record if already exists
let request: NSFetchRequest<SettingsTable> = SettingsTable.fetchRequest()
let searchString = settingNameLabel.text!
request.predicate = NSPredicate(format: "settingName = %@", searchString)
let fetchResult = try? context.fetch(request)
//If record exists, update it. Else - insert.
if fetchResult?.count == 1 {
let change = fetchResult?[0]
change?.setValue(settingNameLabel.text, forKey: "settingName")
change?.setValue(settingValueLabel.text, forKey: "settingValue")
change?.setValue(booleanValueSwich.isOn, forKey: "booleanValue")
try? context.save()
} else
{
tableContext.settingName = settingNameLabel.text
tableContext.settingValue = settingValueLabel.text
tableContext.booleanValue = booleanValueSwich.isOn
context.insert(tableContext)
try? context.save()
}
}
一步一步:
打開應用程序。
用test1填充settingNameLabel。
單擊獲取按鈕。
值出現在各自的文本框中。這裏是數據庫的屏幕截圖更新之前:
變化settingValueLabel.text到test999的值。
單擊保存。
根據以下屏幕截圖 - 值已更改,但應用程序添加了空白行(第1行)。
我已經把這裏斷點:
context.insert(tableContext)
但我的程序永遠放在這裏。而且在我的班級裏沒有其他的插頁可以完成。
有人可以提醒嗎?