2012-03-05 2 views
0

Я, работая с NSMutableArray под названием sections хранить раздел данных для моего UITableView в.Граф массива внутри NSDictionary не зарегистрирован, хотя сам массив записывается

Каждая секция представляет собой NSDictionary, содержащий следующие элементы : Stuff, еще один массив для хранения строк данных раздела и Header - строка заголовка заголовка раздела.

Проблема, с которой я столкнулась, заключается в попытке получить подсчет массива Stuff.

NSLog(@"Returning the count of %@", [[[sections objectAtIndex:0] objectForKey:@"Stuff"] count]); 

Я смог подтвердить, что [[sections objectAtIndex:0] objectForKey:@"Stuff"] действительно получает мне массив; если я это сделаю

NSLog(@"returning the contents of %@", [[sections objectAtIndex:0] objectForKey:@"Stuff"]); 

содержание регистрируется.

Я также знаю, что обычно [Stuff count] с радостью вернет счет массива.

Я что-то упустил или это другое, потому что массив находится в словаре?

ответ

0

Словарь не знает, какие предметы он держать, так что вы должны сказать ему, либо назначая к NSMutableArray или в случае, отбрасывая объект возвращается из словаря в NSMutableArray *

NSLog(@"Returning the count of %@", [(NSArray *)[[sections objectAtIndex:0] objectForKey:@"Stuff"] count]); 
+0

Благодарим за быстрый ответ. Это исправило меня. Для будущей справки мне нужно будет придумать такой тип в любое время, когда мне нужно получить доступ к методам массива для массива в словаре? – vichudson1

0

The -count метод возвращает целое число, а не объект, так что вы должны использовать правильный спецификатор формата:

NSLog(@"Returning the count of %d", [[[sections objectAtIndex:0] objectForKey:@"Stuff"] count]); 

Обратите внимание на использование %d вместо %@.

4

Вы используете %@ в качестве спецификатора формата, но [NSArray count] возвращает NSUinteger.

В соответствии с format specifier docs вы должны вместо этого лить его без знака и использовать %lu. Если вы идете только на iOS, %u без приведения в действие должны делать все отлично.

+0

Спасибо за ваш вклад. Я просто набрал% @. В моем коде я фактически использую% i, и, похоже, он отлично работает после внедрения метода машинного перевода Kirby. – vichudson1

0
NSLog(@"Returning the count of %@", [[[sections objectAtIndex:0] objectForKey:@"Stuff"] count]); 

это должно work..except одну большую ошибку .. % @ для объектов (указателей) .. то, что вы получаете это целое число (число массив) ..change% @ ​​в% г и попробуйте еще раз

Смежные вопросы