从Core Data,iOS获取最后插入的项目

时间:2011-01-29 17:50:03

标签: iphone sqlite ios core-data

有没有办法在核心数据库中获取最后插入的项目?

3 个答案:

答案 0 :(得分:4)

这将返回最后插入的对象。

  

setFetchLimit:1和setFetchOffset:[所有条目的数量 - 1]

答案 1 :(得分:1)

方法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

答案 2 :(得分:0)

我不认为Core Data本身支持这一点。我想你最好的办法是在你的实体中添加一个“dateInserted”属性。