2013-03-06 1 views
2
NSError *error; 
NSString *string = [[NSString alloc] 
        initWithContentsOfURL:URL 
        encoding:NSUTF8StringEncoding 
        error:&error]; 

iPhone에서이 기능을 테스트하면 Wi-Fi가 켜져있을 때 항상 작동합니다. 그러나 3G에있을 때 나는 종종 아무것도 얻지 못합니다. 아마도 내가 연속으로 15 번 시도한다면 (나는 이것을위한 업데이트 버튼을 가지고있다.) 나는 마침내 원하는 결과를 얻는다.initWithContentsOfURL은 종종 nil을 반환합니다.

제 질문은이 문제가 서버 측에 있습니까? 아니면 코드가 불안정합니까? 데이터를보다 안전하게 가져 오기 위해 다른 접근 방식을 사용해야합니까?

답변

1

. 나는이 라이브러리를 매우 강력하고 사용하기 쉽도록 강력하게 추천한다.

1

막연한 대답 이외의 정보를 제공하지 않았지만 여기에 몇 가지 옵션이 있습니다.

가장 중요한 것은 결과를 인쇄해야하는 "error"매개 변수가 있다는 것입니다. 또한 NSString 클래스에서 사용할 수있는 약간 더 나은 API가 있습니다.

은 이런 식으로 코드를 변경

: 지금 대신 STHTTPRequest을 사용하고

NSError *error = NULL; 
NSStringEncoding actualEncoding; 

// variable names in Objective-C should usually start with lower case letters, so change 
// URL in your code to "url", or even something more descriptive, like "urlOfOurString" 
NSString *string = [[NSString alloc] initWithContentsOfURL:urlOfOurString usedEncoding:&actualEncoding error:&error]; 
if(string) 
{ 
    NSLog(@"hey, I actually got a result of %@", string); 

    if(actualEncoding != NSUTF8StringEncoding) 
    { 
     // I also suspect the string you're trying to load really isn't UTF8 
     NSLog(@"and look at that, the actual encoding wasn't NSUTF8StringEncoding"); 
    } 
} else { 
    NSLog(@"error when trying to fetch from URL %@ - %@", [urlOfOurString absoluteString], [error localizedDescription]); 
} 
+0

미안하지만 내가 충분히 명확하지는 않지만 실제로 그렇습니다. 실제로는 UTF8입니다. 이것이 프로세스를 더 안정하게 만들 것인지 시도해 볼 것입니다. 서버 측에서 문제가 될 수 있는지 궁금합니다. – Mathias