2013-05-12 3 views
0

나는이 코드를 사용하여 https://github.com/valentinlietz/MySQL-Connect을 사용하여 대물 c에서 MySQL 쿼리를 사용합니다. Count (*)를 사용하여이 행이 이미 있는지 확인합니다.NSDictionary에서 objectForKey를 가져올 수 없습니다.

이 코드를 NSLog()에 사용했습니다. 이 사전. 코드 :

for(NSArray *row in response.responseDictionary){ 

    NSLog(@"%@", row); 

} 

결과 :

{ 
"" = "<null>"; 
"COUNT(*)" = 0; 
} 

하지만 [response.responseDictionary objectForKey:@"COUNT(*)"];를 사용할 때 그것은 인식 할 수없는 선택기를 반환 있어요 인스턴스로 전송.


업데이트 :

행 :

Row: ({ "" = "<null>"; "COUNT()" = 0; }) 

사전 : 그 프로젝트와 함께 일하지 않은,하지만 https://github.com/valentinlietz/MySQL-Connect/blob/master/MySQL.m에서이 나에게 보이는

Row: { "" = "<null>"; "COUNT()" = 0; } 
+1

"objectForKey"를 보내는 개체가 실제로 NSDictionary가 아니라는 것을 의미합니다. 이 메서드를 호출 할 때 사용한 실제 코드를 입력하십시오. – Stavash

+1

이것이 실제로 사용하는 코드입니까? 'response.responseDictionary'가 사전이라면 사전에있는 키를 루핑 할 것입니다. 키는 배열 인 것처럼 취급하고 디버그 출력은 사전임을 나타냅니다. 이것은 말이되지 않습니다. – Jim

+0

[response.responseDictionary 클래스]는 NSArray를 기록하지만 .responseDictionary는 NSDictionary 권한임을 의미합니까? – sjors

답변

1

response.responseDictionary은 결과입니다스크립트 https://github.com/valentinlietz/MySQL-Connect/blob/master/mysql.php의 JSON 응답을 Foundation 개체로 변환하는 방법

그리고 PHP 스크립트 코드

while($row = mysql_fetch_array($query)) 
{ 
for($i = 0; $i < 50; $i++) { 
    $arr2[$fields[$i]] = $row[$fields[$i]]; 
} 
array_push($return_arr, $arr2); 

} 
echo json_encode($return_arr); 

응답이 사전의 배열을 보여준다. 내가 올바른 오전의 경우에 NSDictionary하지 않기 때문에

그래서, 이름과 responseDictionary 재산의 유형은 심하게 선택하지만 각 개체는 NSDictionary, 입니다 NSArray 경우 다음과 같은 작업을해야합니다 :

NSArray *responseArray = (NSArray *)response.responseDictionary; 
NSLog(@"count = %@", [[responseArray objectAtIndex:0] objectForKey:@"COUNT(*)"]); 
+0

고마워요. responseArray는 이미 적절한 배열 이었지만. – sjors

+0

@sjors : 아마 당신은 그 패키지의 저자에게 연락을 취해이 불일치에 대해 이야기해야 할 것입니다. 아마'isKindOfClass'를 사용하여이 배열이 실제로 배열인지 확인해야합니다. 그러면 나중에 응용 프로그램에서 충돌을 피할 수 있습니다. –

+0

그것은 NSArray입니다, [않았다 [response.responseDictionary 클래스]; 이미 – sjors

관련 문제