2017-02-11 6 views
0

Я программировал с помощью xcode и swift 3 в течение четырех дней и уже нашел эти страницы чрезвычайно полезными. Проблема, с которой я столкнулся, заключается в попытке удалить старые, избыточные записи из моего объекта Core Data. Я могу добавить записи, отмеченные датой, но как только эта дата в прошлом, я хочу избавиться от записи. Вот что я до сих пор, что дает мне ошибку, которая говорит о том, что проблема заключается в том, как я назначаю значение в start_time для thenDate. Является ли что-то очевидным, что мне не хватает?Удаление старых записей из данных ядра

func DeleteOldRecords() -> Void { 
    let deleteContext = getContext() 
    let nowDate = Date() 
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "table") 

    let result = try? deleteContext.fetch(fetchRequest) 
    let resultData = result as! [table] 

    for object in resultData { 
     let thenDate = deleteContext.value(forKey: "start_time") as! Date 
     if thenDate < nowDate { 
      deleteContext.delete(object) 
     } 
    } 

    do { 
     try deleteContext.save() 
    } 
    catch { 

    } 
} 

func getContext() -> NSManagedObjectContext { 
    let appDelegate = UIApplication.shared.delegate as! AppDelegate 
    return appDelegate.persistentContainer.viewContext 
} 

А вот ошибка я получаю:

*** Нагрузочного приложение из-за неперехваченное исключение 'NSUnknownKeyException', причина: «[valueForUndefinedKey]: этот класс не является ключевым кодированием значения - совместим для ключевого start_time. '

ответ

0

Вы пытаетесь получить дату от viewContext, а не из NSManagedObject и контекст не ключевое значение кодирования-совместимый для ключа start_time.

Я предполагаю, что это

let thenDate = object.value(forKey: "start_time") as! Date 

Но вы можете сэкономить много работы, если вы выполняете выборку, используя предикат start_date < now. Это приведет к удалению всех записей.

+0

Вы абсолютно правы. Прыгайте сразу, как только вы это упомянули. Бесконечно благодарен. Это сводило меня с ума! – gaviano