2012-04-28 2 views
1

다음과 같은 문제가 발생했습니다. 내 iPhone-App을 서버의 데이터베이스에 연결하고 싶습니다. 따라서 나는 (단순한) .php 파일을 사용하여 DB에 대한 액세스를 관리합니다. 새로운 데이터를 삽입하면 이미 작동하지만 내가있는 NSMutableArray에 가져온 데이터를 변환하는 몇 가지 문제가 있습니다NSJSONSerialization - NSArray로 JSON을 올바르게 변환하는 방법?

2012-04-28 13:49:37.229 XX[14434:f803] URL : http://xx/getBars.php 
2012-04-28 13:49:37.389 XX[14434:f803] Data : <5b7b2275 6e697175 65223a22 34222c22 4e616d65 223a2254 65737422 2c224465 7461696c 73223a22 54686973 49734154 65737422 7d2c7b22 ...> 
2012-04-28 13:49:37.390 XX[14434:f803] JSON : (null) 
2012-04-28 13:49:37.392 XX[14434:f803] Error : Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Garbage at end.) UserInfo=0x6daa610 {NSDebugDescription=Garbage at end.} 

경우 :

NSURL *contentURL = [NSURL URLWithString:[kHOSTURL stringByAppendingString:kGETBarsURL]]; 
NSLog(@"URL : %@", contentURL); 

NSData *contentData = [NSData dataWithContentsOfURL:contentURL]; 
NSLog(@"Data : %@", contentData); 

NSError *e = nil; 
NSMutableArray *jsonArray = [NSJSONSerialization JSONObjectWithData:contentData 
                  options:kNilOptions 
                   error:&e]; 
NSLog(@"JSON : %@", jsonArray); 
NSLog(@"Error : %@", e); 

출력 ('데이터'내가 'XX'와 단축)이 같다 내가 브라우저에서 페이지를 열은 다음과 같습니다 : 나는 또한 NSJSONSerialization에서 다른 옵션을 시도했지만 그 :(아무도 여기 좀 도와 줄래 작동하지 않았다

[{"unique":"4","Name":"Test","Details":"ThisIsATest"}, 
{"unique":"5","Name":"Test","Details":"ThisIsATest"}, 
{"unique":"6","Name":"Test","Details":"ThisIsATest"}, 
{"unique":"7","Name":"Test","Details":"ThisIsATest"}, 
{"unique":"8","Name":"Test","Details":"ThisIsATest"}, 
{"unique":"9","Name":"Test","Details":"ThisIsATest"}, 
{"unique":"10","Name":"Test","Details":"ThisIsATest"}] 

?
2012-04-28 14:18:30.192 XX[14541:f803] Encoding : [{"unique":"4","Name":"Test","Details":"ThisIsATest"},{"unique":"5","Name":"Test","Details":"ThisIsATest"},{"unique":"6","Name":"Test","Details":"ThisIsATest"},{"unique":"7","Name":"Test","Details":"ThisIsATest"},{"unique":"8","Name":"Test","Details":"ThisIsATest"},{"unique":"9","Name":"Test","Details":"ThisIsATest"},{"unique":"10","Name":"Test","Details":"ThisIsATest"}] 
<script type="text/javascript"> 

    var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-16106315-6']); 
    _gaq.push(['_setDomainName', '.xx.de']); 
    _gaq.push(['_trackPageview']); 

    (function() { 
    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true; 
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js'; 
    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s); 
    })(); 

</script> 
+1

오류는 마지막에 가비지 데이터가 있다고합니다. 그걸 확인해 봤어? –

+0

어떻게 확인할 수 있습니까? :) 내가 언급 한 바와 같이 위에 표시된 콘텐츠로 웹 페이지를 열었지 만 괜찮습니까? – pasql

+1

데이터를 NSString으로 변환하여 인쇄하고 올바른 JSON인지 확인하십시오. NSH (@ "% @", [NSString alloc] initWithData : contentData 인코딩 : NSUTF8StringEncoding]), –

답변

2

마지막에는 '쓰레기'가 있습니다. 브라우저에 표시되지 않지만 PHP 스크립트에서 반환되는 JavaScript 블록이 있습니다. 그것을 제거하면 당신은 잘되어야합니다.

+0

대단히 감사합니다 :) 지금 당장! – pasql

0

나는 최근에 같은 문제가 있었는데 거의 한 시간 후에 요청을 보내고있는 URL에 문제가 있음을 알았습니다. 실제로 JSON 데이터로 응답하는지 확인하려면 URL을 확인하십시오. 행운을 빕니다!;