有没有一种方法可以获取Core Data数据库中最后插入的项目?
这将返回最后插入的对象。
使用setFetchLimit:1和setFetchOffset:[所有条目的数量 - 1]
方法一:
我已经在 @Olsi 的答案基础上扩展了示例代码,包括获取所有实体数量的代码行。这是我的做法:
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDelegate.managedObjectContext
let request = NSFetchRequest(entityName: "MyEntity")
let allElementsCount = context.countForFetchRequest(request, error: nil)
request.fetchLimit = 1
request.fetchOffset = allElementsCount - 1
request.returnsObjectsAsFaults = false
方法2:
然而,还有一种使用sortDescriptors
的方法。不确定哪种更适合,它们都可以完成同样的工作:
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDelegate.managedObjectContext
let request = NSFetchRequest(entityName: "MyEntity")
request.sortDescriptors = [NSSortDescriptor(key: "momentTimeStamp", ascending: false)]
request.fetchLimit = 1
request.returnsObjectsAsFaults = false
我认为Core Data本身不支持此功能。我猜你最好的选择是在实体中添加一个“dateInserted”属性。