CoreData - как создать fetchrequest для получения массива случайных значений атрибутов - PullRequest
0 голосов
/ 02 октября 2011

У меня есть простая модель с 2 объектами Дом и Квартира . Дом имеет ко многим отношение к Квартира . Flat имеет такие атрибуты, как number и description .

Я хотел бы получить список случайных восьми плоских чисел.

Я пытаюсь пойти по этому пути, но мне кажется, что 'неправильно

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"House" inManagedObjectContext:self.managedObjectContext];

    [fetchRequest setEntity:entity];

    [fetchRequest setFetchBatchSize:20];

    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];

    NSArray *houses = [aFetchedResultsController fetchedObjects];

Тогда мне нужно получить соответствующие значения.

Пожалуйста, покажите мне правильный подход,

Я пытаюсь ответить сам.Возможно, мой мозг сухой :) Просто нужно

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Flat" inManagedObjectContext:self.managedObjectContext];

, а затем работать с массивом извлеченных объектов.Но я уверен, что есть более элегантное решение.

У меня есть еще один вопрос, связанный с первым.Как получить случайные объекты, если количество квартир около 10000?В целом работает, но заметно замедляется.

1 Ответ

0 голосов
/ 02 октября 2011

LimitСортируйте записи случайным образом и установите [fetchRequest setFetchLimit:8];, чтобы получить первые восемь.Для случайной сортировки создайте NSSortDescriptor с селектором или компаратором, который случайным образом возвращает NSComparisonResult, и добавьте этот дескриптор в запрос выборки.

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