Core data 从核心数据中删除旧记录

Core data 从核心数据中删除旧记录,core-data,swift3,Core Data,Swift3,我已经用xcode和swift 3编程四天了,已经发现这些页面非常有用。我遇到的问题是试图从核心数据实体中删除旧的冗余记录。我可以添加带有日期戳的记录,但一旦该日期成为过去,我就想删除该记录。这是我到目前为止得到的,这给了我一个错误,表明问题在于我如何在开始时间到截止日期分配值。我是不是错过了什么 func DeleteOldRecords() -> Void { let deleteContext = getContext() let nowDate = Date()

我已经用xcode和swift 3编程四天了,已经发现这些页面非常有用。我遇到的问题是试图从核心数据实体中删除旧的冗余记录。我可以添加带有日期戳的记录,但一旦该日期成为过去,我就想删除该记录。这是我到目前为止得到的,这给了我一个错误,表明问题在于我如何在开始时间到截止日期分配值。我是不是错过了什么

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
}
func DeleteOldRecords()->Void{
让deleteContext=getContext()
让nowDate=Date()
let fetchRequest=NSFetchRequest(entityName:“表”)
let result=try?deleteContext.fetch(fetchRequest)
让resultData=结果为![表]
对于resultData中的对象{
让thenDate=deleteContext.value(forKey:“开始时间”)作为!日期
如果thenDateNSManagedObjectContext{
让appDelegate=UIApplication.shared.delegate为!appDelegate
返回appDelegate.persistentContainer.viewContext
}
下面是我得到的错误:

***由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[valueForUndefinedKey:]:此类在密钥开始时间不符合密钥值编码。”


您正试图从
viewContext
而不是从
NSManagedObject
获取日期,并且对于密钥开始时间,上下文不符合键值编码

我想是的

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

但是,如果使用谓词
start\u date
执行提取,则可以节省大量工作。这将返回所有要删除的记录。

你完全正确。你一提起就跳出来。非常感谢。这让我快发疯了!