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

4
有没有一种方法可以获取Core Data数据库中最后插入的项目?
3个回答

5

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

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


2

方法一:
我已经在 @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

0

我认为Core Data本身不支持此功能。我猜你最好的选择是在实体中添加一个“dateInserted”属性。


我已经通过 setFetchLimit: 和 setFetchOffset: 成功实现了,不过还是谢谢 :) - Olsi
setFetchLimit:1和setFetchOffset:[所有条目的数量-1] - 这将返回最后插入的对象。 - Olsi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接