【发布时间】:2011-06-17 19:52:50
【问题描述】:
有没有办法在核心数据数据库中获取最后插入的项目?
【问题讨论】:
标签: iphone sqlite ios core-data
有没有办法在核心数据数据库中获取最后插入的项目?
【问题讨论】:
标签: iphone sqlite ios core-data
我认为 Core Data 本身并不支持这一点。我想你最好的选择是为你的实体添加一个“dateInserted”属性。
【讨论】:
这将返回最后插入的对象。
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
方法二:
但是,还有另一种使用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
【讨论】: