我正在请求Core Data根据contentid按升序返回其实体条目:
let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext!
let sort = NSSortDescriptor(key:"contentid", ascending:true)
fetchRequest.sortDescriptors = [sort]
let fetchedResults = managedObjectContent.executeFetchRequest(fetchRequest, error: &error) as! [NSManagedObject]
如何删除Core Data&#39返回的升序条目中的第一个对象?
我还尝试通过指定获取单个对象:
fetchRequest.fetchLimit = 1
认为这将返回[NSManagedObject],我试图执行:
managedObjectContext.deleteObject(fetchedResults)
但它抛出了错误:cannot invoke method deleteObject with type '([NSManagedObject])'
。我究竟做错了什么?我是否需要将[NSManagedObject]
转换为NSManagedObject
?
答案 0 :(得分:2)
试试这个:
let fetchedResults = context.executeFetchRequest(fetchRequest, error: nil)
if let result = fetchedResults?.first as? NSManagedObject {
context.deleteObject(result)
}
executeFetchRequest
返回[AnyObject]?
,因此您必须打开它,取出第一个对象并将其强制转换为NSManagedObject
。之后,您将能够使用此对象执行删除。
答案 1 :(得分:1)
尝试使用managedObjectContext.deleteObject(fetchedResults[0])
,首先检查fetchedResults [0]是否存在。
您也可以使用:managedObjectContext.deleteObject(fetchedResults.first)
答案 2 :(得分:0)
从返回的数组中检索第一个对象,然后使用deleteObject:
上找到很多有用的信息- 编辑 -
来自Apple Doc
func executeFetchRequest(_ request:NSFetchRequest, 错误错误:NSErrorPointer) - > [AnyObject]
返回值
符合指定条件的对象数组 请求从接收方和持久性存储中获取 与接收者的持久性商店协调员相关联。如果 发生错误,返回nil。如果没有对象符合指定的条件 按请求,返回一个空数组。
请注意,executeFetchRequest的返回值是一个数组,而不是NSManagedObject