删除Core Data中的第一个对象(Swift)

我正在请求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返回的升序条目中的第一个对象?

我也尝试通过指定获取单个对象:

 fetchRequest.fetchLimit = 1 

认为这将返回一个[NSManagedObject],我试图然后执行:

 managedObjectContext.deleteObject(fetchedResults) 

但它抛出的错误不能调用types为'([NSManagedObject])'的方法deleteObject'。 我究竟做错了什么? 我是否需要将[NSManagedObject]转换为NSManagedObject?

尝试这个:

 let fetchedResults = context.executeFetchRequest(fetchRequest, error: nil) if let result = fetchedResults?.first as? NSManagedObject { context.deleteObject(result) } 

executeFetchRequest返回[AnyObject]? 所以你必须打开它,拿第一个对象,并将其转换为NSManagedObject 。 之后,您将能够使用此对象执行删除操作。

尝试使用managedObjectContext.deleteObject(fetchedResults[0]) ,首先检查fetchedResults [0]是否存在。 你也可以使用: managedObjectContext.deleteObject(fetchedResults.first)

从返回的数组中检索第一个对象,然后使用deleteObject:

您可以在Apple文档中find很多有用的信息

– 编辑 –

从Apple Doc

func executeFetchRequest(_ request:NSFetchRequest,错误错误:NSErrorPointer) – > [AnyObject]?

返回值

满足从接收者获取的请求所指定的标准以及与接收者的持久存储协调器相关联的持久性存储的对象数组。 如果发生错误,则返回nil。 如果没有对象与请求指定的条件匹配,则返回一个空数组。

注意executeFetchRequest的返回值是一个数组,而不是一个NSManagedObject