首页 > 解决方案 > 从 tableview 选择中快速使用 CoreData

问题描述

我有 2 个函数,一个应该将字符串保存到 CoreData 属性,另一个用于获取它。这是通过从项目的其他地方复制工作代码编写的,所以我无法弄清楚为什么当我打印“currentSetting”的内容时我得到了 nil。

从 didSelectRowAtIndexPath 调用 save 函数,并将 indexPath.row 作为参数发送,这会从数组中获取字符串。

func getImageSetting() {
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let context = appDelegate.persistentContainer.viewContext
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Settings")
    do {
        let fetcher = try context.fetch(fetchRequest)
        let data = fetcher as? [NSManagedObject]
        if let results = data {
                let settingResult = results[0]
                currentSetting = settingResult.value(forKey: "imageQuality") as? String
                print(currentSetting as Any)
            } else { print ("error") }
        }
        catch let error as NSError {
            fatalError("Unresolved error \(error), \(error.userInfo)")
        }
}

func saveSetting(selection: Int) {
    let coreSelection = choices[selection]
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let managedContext = appDelegate.persistentContainer.viewContext
    let itemEntity = NSEntityDescription.entity(forEntityName: "Settings", in: managedContext)!
    let item = NSManagedObject(entity: itemEntity, insertInto: managedContext)
    item.setValue(coreSelection, forKey: "imageQuality")
    do {
        try managedContext.save()
    } catch let error as NSError {
        fatalError("Unresolved error \(error), \(error.userInfo)")
    }
}

标签: swiftcore-datasave

解决方案


推荐阅读