Как автоматически удалить самые старые основные записи данных, когда достигнут предел 50 записей? - PullRequest
6 голосов
/ 03 марта 2011

Я пытаюсь выполнить следующее: мне нужно ограничить количество записей основных данных до 50. Поэтому, если пользователь вводит свою 50-ую запись, приложение удалит самую старую запись и добавит новую запись в вершина стека. Таким образом, в основном, если пользователь никогда не удаляет записи и если в основных данных содержится 50 записей, то, когда пользователь пытается добавить новую запись, приложение удаляет самую старую запись и добавляет новую запись пользователя. По сути, я пытаюсь создать что-то вроде истории, но я не хочу, чтобы пользователь мог проходить более 50 записей, однако я хочу, чтобы они могли добавлять новые записи, когда они достигли предела в 50, просто удалив самый старый и добавление самого нового. Что было бы самым простым способом сделать это? Я новичок в основных данных, и мне трудно понять многое из этого. Вот код / ​​пример приложения, с которым я работаю. Ссылка на пример приложения, которое я использую Спасибо за помощь.

Ответы [ 2 ]

11 голосов
/ 03 марта 2011

Допустим, у вас есть сущность с именем History.Самым простым решением было бы добавить атрибут creationDate к вашим сущностям.Затем используйте это для управления вашими History объектами.

Вам понадобятся три выборки:

  1. Первый из них извлечет из-за неисправностей все существующие History объекты, а затем подсчитает их.Если количество <50, то просто добавьте новый объект <code>History и все готово.
  2. Если число> = 50, тогда выполните выборку для конкретного значения и используйте оператор коллекций @max или @min (я забыл, какой для дат), чтобы найти самую старую creationDate,(К счастью, пример по ссылке - это почти то, что вам нужно.)
  3. Выполните выборку для объекта с помощью creationDate, возвращенного (2), и удалите его.

Затем добавьте новый объект истории.

1 голос
/ 03 марта 2011

ОК, все в порядке.CoreData не собирается делать это за вас, но вы можете сделать это самостоятельно.

Вы можете извлечь объекты из контекста, используя NSFetchRequest, и вы можете удалить их, используя -[NSManagedObjectContext deleteObject:].Вы можете сортировать их, используя NSSortDescriptor объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...