簡體   English   中英

當達到50個限制時,如何自動刪除最舊的核心數據條目?

[英]How to automatically delete oldest core data entries when reach 50 entry limit?

我想要完成的是:我需要將核心數據條目的數量限制為50.因此,如果用戶輸入他們的第50個條目,那么應用程序將刪除最舊的條目並將新條目添加到頂部堆。 所以基本上,如果用戶從不刪除條目,並且核心數據中有50個條目,那么當用戶嘗試添加新條目時,應用程序將刪除最舊的條目並添加用戶的新條目。 基本上,我試圖有一個歷史記錄的東西,但我不希望用戶能夠超過50個條目,但我希望他們能夠在50個限制時添加新條目,只需刪除最古老的一個並添加最新的一個。 最簡單的方法是什么? 我是核心數據的新手,很難理解其中的很多內容。 這是我正在使用的代碼/示例應用程序。 鏈接到我正在使用的示例應用程序感謝您的幫助。

假設您有一個名為History的實體。 最簡單的解決方案是向您的實體添加creationDate屬性。 然后使用它來管理您的History對象。

你需要三次取件:

  1. 第一個將獲取所有現有History對象的錯誤,然后對它們進行計數。 如果計數<50,那么只需添加新的History對象和完成。
  2. 如果count> = 50,則對特定值進行獲取,並使用@max或@min(我忘記哪些日期)集合運算符來查找最早的creationDate (幸運的是,鏈接上的例子就是你所需要的。)
  3. 使用(2)返回的creationDate執行對象的獲取並刪除它。

然后添加新的歷史記錄對象。

好沒問題。 CoreData不會為你做這件事,但你可以自己做。

您可以使用NSFetchRequest從上下文中檢索對象,並且可以使用-[NSManagedObjectContext deleteObject:]刪除它們。 您可以使用NSSortDescriptor對象對它們進行排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM