Я разместил это на форумах разработчиков Apple здесь, так как мне кажется, что это ошибка в реальном SDK, но я подумал, что выложу и здесь и посмотрю, сможет ли кто-нибудь проверить, или нет, я использую эту штуку неправильно (не похоже) или это неправильное поведение.
https://devforums.apple.com/thread/72738
-
После того, как немного отлаживая некоторый код, я обнаружил очень странное и тревожное поведение экземпляра NSFetchedResultsSectionInfo
.
NSFetchedResultsController *frc = [self frcForTableView:tableView];
id sectionInfo = [[frc sections] objectAtIndex:
[indexPath indexAtPosition:1]];
NSLog( @"Looking at %@ with section %@ (%d objects)",
indexPath, [sectionInfo objects], [sectionInfo numberOfObjects] );
Обычно я беру FRC, а затем вытаскиваю из него один из объектов sectionInfo (не Не беспокойтесь о том, почему я хватаюсь за позицию 1 пути индекса, а не за 0 ... здесь это не имеет значения). Интересно то, что вывод NSLog для вышеуказанного выглядит так:
Looking at 2 indexes [0, 0] with section (
"TBN.B x 1 for order 1187",
"TBN.T x 1 for order 1187"
) (1 objects)`
Итак, в массиве [sectionInfo objects]
есть две вещи, но [sectionInfo numberOfObjects]
сообщает, что у него есть только один. Чтобы исключить возможность проблемы с кешированием, я отключил все кэширование в настройке FRC перед запуском этого кода.
Здесь довольно тупик. Не знаю, как один объект sectionInfo может не соглашаться с самим собой по поводу того, сколько в нем объектов.
Есть идеи от разработчиков Apple? Запуск XCode 3.2.4 и SDK 4.1.
Редактировать: FYI, правильный объект для этого раздела на самом деле является первым (TBN.B), поэтому в моем тестировании до сих пор кажется, что если вы учитываете только часть массива объектов до numberOfObjects
, то вы получите правильные результаты. Тем не менее, все еще любопытно, почему дополнительный объект появляется в конце массива, когда он не является частью этого раздела.