Использование CoreData в быстрой выборке из таблицы - PullRequest
0 голосов
/ 12 июля 2019

У меня есть 2 функции, одна из которых должна сохранить строку в атрибуте CoreData, а другая - извлечь ее. И это было написано путем копирования рабочего кода из другого места в проекте, поэтому я не могу понять, почему, когда я печатаю содержимое «currentSetting», я получаю ноль.

Функция сохранения вызывается из didSelectRowAtIndexPath, и она отправляет в качестве параметра 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)")
    }
}
...