#objective-c #ios4 #core-data
#objective-c #ios4 #core-данные
Вопрос:
У меня есть простая модель с 2 объектами House и Flat. Дом имеет много общего с квартирой. Flat имеет такие атрибуты, как число и описание.
Я хотел бы получить список случайных восьми плоских чисел.
Я пытаюсь пойти этим путем, но кажется, что «неправильно
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:
Ограничения сортируют записи случайным образом и устанавливают [fetchRequest setFetchLimit:8];
, чтобы получить первые восемь. Для случайной сортировки создайте NSSortDescriptor
с помощью селектора или компаратора, который возвращает NSComparisonResult
случайным образом, и добавьте этот дескриптор в запрос выборки.
Комментарии:
1. Спасибо за ответ. Но вы имели в виду [fetchRequest setFetchLimits:8]
2. Упс! Да, я имел в виду
setFetchLimit: