Не удается получить нужное количество объектов из NSFetchedResultsController

#iphone #objective-c #ipad #core-data

#iPhone #objective-c #iPad #core-данные

Вопрос:

Что я делаю:

Я использую CoreData для хранения информации для моего приложения. Наиболее логичный способ сделать это в моем случае — использовать indexPaths с 3 измерениями, например:

 unsigned indexes[3] = {week, day, position};
NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:indexes length:3];
return [self.fetchedResultsController objectAtIndexPath:indexPath];
  

Во-первых, это нормально — или объекты должны строго храниться в двумерном indexPath?


Где я застрял:

Если это нормально, как я могу исправить следующий метод:

 - (int)numEventsForWeek:(UInt8)week day:(dayOfWeek)day;
{
    id <NSFetchedResultsSectionInfo> sectionInfo = [[[self.fetchedResultsController sections] objectAtIndex:week] objectAtIndex:day];
    return [sectionInfo numberOfObjects];
}
  

В настоящее время происходит сбой из-за нераспознанной ошибки селектора (второй objectAtIndex:) — Но если я удалю второй objectAtIndex:, sectionInfo выдаст мне только количество объектов, суженных до второго измерения индекса (что слишком много объектов, мне нужно, чтобы число было сужено до третьего измерения).

Комментарии:

1. Не могли бы вы объяснить базовую модель данных core?

2. @VinceBurn он состоит из одного объекта ( связанный класс) с небольшим количеством свойств. Этот объект / класс представляет событие, и я пытаюсь сохранить / получить к ним доступ на основе недели и дня недели, когда они происходят (события ежемесячны). После некоторых дополнительных исследований похоже, что я могу использовать только многомерные индексы, если я реализую путь к ключу имени раздела для контроллера полученных результатов?

Ответ №1:

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

Можете ли вы сделать снимок экрана вашего объекта? У меня может быть другая идея…

Комментарии:

1. Спасибо — до сих пор я никогда не осознавал, что существует такая вещь, как фильтр предикатов. После небольшого поиска в Google, похоже, что это гораздо более логичный способ достичь того, чего я хочу — приветствия.