当达到50个限制时,如何自动删除最旧的核心数据条目?

时间:2011-03-03 00:35:47

标签: iphone objective-c core-data ios4

我想要完成的是以下内容:我需要将核心数据条目的数量限制为50.因此,如果用户输入第50个条目,那么应用程序将删除最旧的条目并将新条目添加到堆栈顶部。所以基本上,如果用户从不删除条目,并且核心数据中有50个条目,那么当用户尝试添加新条目时,应用程序将删除最旧的条目并添加用户的新条目。基本上,我试图有一个历史记录的东西,但我不希望用户能够超过50个条目,但我希望他们能够在50个限制时添加新条目,只需删除最古老的一个并添加最新的一个。最简单的方法是什么?我是核心数据的新手,很难理解其中的很多内容。这是我正在使用的代码/示例应用程序。 LINK TO EXAMPLE APP THAT I'M USING感谢您的帮助。

2 个答案:

答案 0 :(得分:11)

假设您有一个名为History的实体。最简单的解决方案是向您的实体添加creationDate属性。然后使用它来管理History个对象。

您需要三次抓取:

  1. 第一个将获取所有现有History个对象的错误,然后计算它们。如果计数<50,则只需添加新的History对象即可。
  2. 如果计数&gt; = 50,则执行fetch for specific value并使用@max或@min(我忘记哪些日期)集合运算符来查找最早的creationDate。 (幸运的是,链接上的例子就是你所需要的。)
  3. 使用(2)返回的creationDate执行对象的提取并删除它。
  4. 然后添加新的历史记录对象。

答案 1 :(得分:1)

好的,没关系。 CoreData不会为你做这件事,但你可以自己做。

您可以使用NSFetchRequest从您的上下文中检索对象,并可以使用-[NSManagedObjectContext deleteObject:]删除它们。您可以使用NSSortDescriptor个对象对它们进行排序。