#ios #objective-c #uitableview #nsdictionary
#iOS #objective-c #uitableview #nsdictionary
Вопрос:
У меня есть словарь, который выглядит следующим образом (страница настроек):
Logout = Logout;
Social = (
Facebook,
Twitter
);
Terms = (
"Privacy Policy",
"Terms of Service"
);
Затем правильно упорядоченный массив:
`Social, Terms, Logout`
Сейчас у меня есть три раздела. Из cellForRowAtIndexPath я пытаюсь это сделать:
cell.textLabel.text = [[_settingsOptions objectForKey:
[_arrayKeys objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row];
И я получаю ошибку NSCFConstantString. Когда я вручную ввожу числа для индексов, все отображается нормально. Но из метода источника данных я получаю эту ошибку. Может кто-нибудь найти ошибку?
Комментарии:
1. Является ли значение строки
Logout = Logout
также массивом?2. @MABVT Вы правы… когда я создавал словарь, я не
[NSArray arrayWithObject:]
использовал опцию «Выход из системы»… спасибо за предложение!3. NSLog() словарь и укажите это в вопросе. Кроме того, разбейте один оператор на отдельные промежуточные операторы, это упрощает отладку и понимание. См. Пример «отсутствие ответа».
Ответ №1:
Пример кода в качестве ответа (которого нет) для форматирования:
NSString *s1 = [_arrayKeys objectAtIndex:indexPath.section];
NSArray *s2 = [_settingsOptions objectForKey:s1];
NSString *text = [s2 objectAtIndex:indexPath.row];
cell.textLabel.text = text;
Реальный код будет иметь фактические типы (как я догадался) и описательные имена вместо s1 s2, text .
Простое указание промежуточных типов и описательных имен может сделать ошибку понятной.
Теперь каждый шаг может быть независимо отлажен и при желании NSLog’ed.