Я разместил это на форумах разработчиков Apple здесь, так как мне кажется, что это ошибка в реальном SDK, но я решил опубликовать это здесь и посмотреть, сможет ли кто-нибудь проверить, использую ли я это или нет. что-то неправильно (не похоже на это) или это неправильное поведение.
https://devforums.apple.com/thread/72738
-
Потратив немного времени на отладку некоторого кода, я обнаружил очень странное и тревожное поведение экземпляра NSFetchedResultsSectionInfo
.
NSFetchedResultsController *frc = [self frcForTableView:tableView];
id <NSFetchedResultsSectionInfo> 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 <NSIndexPath 0x8828ee0> 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 и 4.1 SDK.
Редактировать: К вашему сведению, правильный объект для этого раздела на самом деле является первым (TBN.B), поэтому в моем тестировании до сих пор оказалось, что если вы рассматриваете только часть массива объектов до numberOfObjects
тогда вы получите правильные результаты. Тем не менее, все еще любопытно, почему дополнительный объект появляется в конце массива, когда он не является частью этого раздела.