Core data 从核心数据中删除旧记录
我已经用xcode和swift 3编程四天了,已经发现这些页面非常有用。我遇到的问题是试图从核心数据实体中删除旧的冗余记录。我可以添加带有日期戳的记录,但一旦该日期成为过去,我就想删除该记录。这是我到目前为止得到的,这给了我一个错误,表明问题在于我如何在开始时间到截止日期分配值。我是不是错过了什么Core data 从核心数据中删除旧记录,core-data,swift3,Core Data,Swift3,我已经用xcode和swift 3编程四天了,已经发现这些页面非常有用。我遇到的问题是试图从核心数据实体中删除旧的冗余记录。我可以添加带有日期戳的记录,但一旦该日期成为过去,我就想删除该记录。这是我到目前为止得到的,这给了我一个错误,表明问题在于我如何在开始时间到截止日期分配值。我是不是错过了什么 func DeleteOldRecords() -> Void { let deleteContext = getContext() let nowDate = Date()
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
执行提取,则可以节省大量工作。这将返回所有要删除的记录。你完全正确。你一提起就跳出来。非常感谢。这让我快发疯了!