Выбор случайных записей из основного хранилища данных - PullRequest
4 голосов
/ 13 июля 2009

Есть ли способ выбрать фиксированное количество случайных записей в хранилище базовых данных? Я только начинаю с Core Data и застрял в этой проблеме в течение достаточно долгого времени.

В крайнем случае, я могу запросить большой выбор записей в памяти, а затем случайным образом выбрать фиксированное число.

Кроме того, есть ли способ указать пользовательские операторы SQL, которые будут выполняться в хранилище базовых данных? Я понимаю, что это было бы крайне маловероятно, поскольку базовой реализацией хранилища мог бы быть и файл XML.

Ответы [ 3 ]

2 голосов
/ 13 июля 2009

Ммм ... может быть

[[[managedObjectsContext registeredObjects] allObjects] objectsAtIndex:r]

где r - случайное число между 0 и числом объектов минус один? Совсем не эффективно, но быстро и просто.

РЕДАКТИРОВАТЬ : если вы хотите выбрать случайный объект между выбором ваших объектов, то создайте запрос выборки, который описывает ваш выбор объекта и сделайте то же самое, что и выше, с результатами запроса:

[[[managedObjectsContext executeFetchRequest:request error:&error] objectAtIndex:r]
0 голосов
/ 20 июля 2009

Не уверен, но я думаю, что Core Data помещает данные в NSSets для вас. Таким образом, вы можете использовать - [NSSet anyObject]. Я не проверял это или что-нибудь.

0 голосов
/ 15 июля 2009

Что касается вашего второго вопроса, который является одним из пунктов Базовых Данных, чтобы абстрагироваться от основного хранилища данных. Использование NSPredicate и NSExpressions для построения запроса на выборку или его сохранение в модели данных - единственный способ запросить хранилище.

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