【问题标题】:Get last inserted item from Core Data, iOS从 Core Data,iOS 获取最后插入的项目
【发布时间】:2011-06-17 19:52:50
【问题描述】:

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

【问题讨论】:

    标签: iphone sqlite ios core-data


    【解决方案1】:

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

    【讨论】:

    • 我设法通过 setFetchLimit: & setFetchOffset: 做到了,但还是谢谢 :)
    • setFetchLimit:1 和 setFetchOffset:[所有条目数 - 1] - 这将返回最后插入的对象。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      方法一:
      我已经使用示例代码扩展了@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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多