Я работаю над Руководством по BNR по программированию для iOS, и у меня возникли проблемы с попыткой решить проблему разделения данных UITableView на разделы.Краткое изложение того, что я имею в виду, таково.Мне нужен был гибкий способ управления разделами tableView, поэтому я создал NSMutableArray для хранения разделов. Каждый объект в массиве представляет раздел таблицы через NSDictionary.Словарь содержит 2 ключа, строку для заголовка раздела и массив для хранения владения разделом.У меня есть небольшая подпрограмма, которая получает allPossesions из класса store и сортирует и сохраняет их в соответствующих массивах и словаре.Я работал над переписыванием своего кода, чтобы включить это, и я наткнулся на запутанный дорожный блок.Поскольку мое приложение работает в отладчике, я выбрасываю много NSLogs для отслеживания происходящего.Похоже, у меня нет проблем с доступом и регистрацией содержимого моего массива разделов или его обязательных требований в большинстве методов поддержки табличного представления;но когда вызывается cellForRowAtIndexpath, боги кода перестают мне улыбаться.Каким-то образом, когда я пытаюсь получить доступ или выйти из массива моего имущества, он внезапно становится пустым.
Я не могу за всю жизнь понять это.Я уже несколько дней бьюсь головой об этом и с удовольствием приму любой вклад или помощь.Ниже мой itemsViewController.h и его реализация.Пожалуйста, не обращайте внимания на беспорядок логов и закомментированных разделов.Я пытался выяснить это и оставил их, чтобы люди могли сказать мне, что мне, возможно, нужно изменить в моем подходе к этому.Также стоит отметить, что таблица изначально пуста, и у приложения нет проблем, пока я не попытаюсь что-то добавить к ней.
Наконец, вот мой журнал попыток запустить приложение.Маленький зеленый индикатор находится прямо на линии, где я пытаюсь записать содержимое разделов во время cellForRow ....... после сбоя приложения.
2012-03-10 06:22:00.177 HomePwnr[44399:f803] ItemsViewController init called
2012-03-10 06:22:00.180 HomePwnr[44399:f803] divideSections called
2012-03-10 06:22:00.181 HomePwnr[44399:f803] End of divideSections sections holding (
)
2012-03-10 06:22:00.188 HomePwnr[44399:f803] divideSections called
2012-03-10 06:22:00.189 HomePwnr[44399:f803] End of divideSections sections holding (
)
2012-03-10 06:22:00.189 HomePwnr[44399:f803] returning number of sections: 0
2012-03-10 06:22:00.190 HomePwnr[44399:f803] returning number of sections: 0
2012-03-10 06:22:00.191 HomePwnr[44399:f803] viewWillAppear called - sections = (
)
2012-03-10 06:22:04.234 HomePwnr[44399:f803] addNewPossession called - sections = (
)
2012-03-10 06:22:04.235 HomePwnr[44399:f803] divideSections called
2012-03-10 06:22:04.237 HomePwnr[44399:f803] End of divideSections sections holding (
{
Header = "Cheap Stuff";
Possessions = (
"Shiny Gun (7R3K0): Worth $40, recorded on 2012-03-10 11:22:04 +0000"
);
}
)
2012-03-10 06:22:04.238 HomePwnr[44399:f803] returning number of sections: 1
2012-03-10 06:22:04.239 HomePwnr[44399:f803] tableView:titleForHeaderInSectionCalled - sections = (
{
Header = "Cheap Stuff";
Possessions = (
"Shiny Gun (7R3K0): Worth $40, recorded on 2012-03-10 11:22:04 +0000"
);
}
)
2012-03-10 06:22:04.240 HomePwnr[44399:f803] Returning My Stuff
2012-03-10 06:22:04.241 HomePwnr[44399:f803] tableView:titleForHeaderInSectionCalled - sections = (
{
Header = "Cheap Stuff";
Possessions = (
"Shiny Gun (7R3K0): Worth $40, recorded on 2012-03-10 11:22:04 +0000"
);
}
)
2012-03-10 06:22:04.241 HomePwnr[44399:f803] Returning My Stuff
2012-03-10 06:22:04.243 HomePwnr[44399:f803] tableView:cellForRowAtIndexPath called for section 0, Row 0
(lldb)