2012-03-05 3 views
0

나는 내 UITableView의 섹션 데이터를 저장하기 위해 sections를라는 NSMutableArray 작업.카운트가 기록되지 않습니다

는 각 섹션은 다음 항목을 포함하는 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

받는 당신의 사전에서 반환해야한다 객체의 종류를 알 수 없습니다 사전 -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한다 .. @%는 당신이 얻고있는 것은 % d 개에 정수 (배열 수) ..change % @입니다 .. 객체 (포인터) 용이며 다시 시도하십시오

관련 문제