2012-12-20 5 views
0

이 파일에서 텍스트를 읽고 내 앱의 라벨에 표시하려고합니다. 이 코드 조각에 오류 메시지가 나타납니다.iOS NSURL to NSString

NSURL *url = [NSURL URLWithString:@"http://www.funnynewsletter.tk/files/file.txt"]; 
NSString *content = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding]; 
label.text = content; 

알고 있습니다. 나는 iOS를 배우기 시작하고 있으며 노력 중이다. 당신이 전체 코드가 아닌 소스와 아이디어를 줄 수 있다면, 그것은 인정 될 것입니다 ... 나는 당신의 일을 복사하는 것이 아니라 배우려고 노력하고 있습니다. 모두에게 감사드립니다! :)

오류 메시지 : No known class method for selector 'stringWithContentsOfUrl:encoding'

+1

오류 메시지 란 무엇입니까? – SSteve

+0

죄송합니다. 죄송합니다. :/선택자 'stringWithContentsOfUrl : encoding'에 대한 알려진 클래스 메소드가 없습니다. @SSteve 어리석은 질문 인 경우 죄송합니다 ... –

+0

걱정하지 마시고, 모두가 어딘가에서 시작해야합니다. 오래된 참고 자료를보고있는 것일 수도 있습니다. 자세한 내용은 내 대답을 참조하십시오. – SSteve

답변

1

오류 메시지는 NSString 클래스에 해당 이름의 메소드가 없다는 것을 알려줍니다. 적절한 방법은 stringWithContentsOfURL:encoding:error:입니다. 나는 stringWithContentsOfURL:encoding: 이었지만 이전에는 사용되지 않았고 제거되었다고 생각합니다. 테스트 만하고 오류에 상관하지 않는 경우 nilerror:에 전달할 수 있습니다. 그러나 모든 코드에서 그렇게하지 마십시오.

+0

도와 줘서 고마워. 나는 이것을하는 것이 최선의 방법이 아니라는 것을 알고있다. 서버에서 문자열을 읽으려면 다른 방향으로 나를 가리켜 주시겠습니까? @SSteve –

+3

@SSteve 당신의 방식에는 아무런 문제가 없습니다 ...단, 동기/차단입니다. 비동기로 만들면 앱을 향상시킬 수 있으므로 나머지 앱에서는 결과가 서버에서 반환 될 때까지 기다릴 필요가 없습니다. 그것이 그랜드 센트럴 디스패치가 좋은 것입니다. – foundry

+0

@HeWas : 감사. 파일의 텍스트가 여전히 레이블에 표시되지 않습니다. 어떤 아이디어? –

-1

당신은 NSURL에서 문자열을 얻고 싶은 경우에, description 방법은 도움이 될 수 있습니다.

NSURL *url = [NSURL URLWithString:@"http://www.funnynewsletter.tk/files/file.txt"]; 
label.text = url.description; 
+1

그가 원했던 것이 레이블에있는 URL이라면 왜 'NSURL'이 필요할까요? 분명히 그는 URL을로드하는 텍스트 결과를 원합니다. – rmaddy

1

이 줄 :

NSString *content = [NSString stringWithContentsOfURL:url 
              encoding:NSASCIIStringEncoding]; 

이해야합니다 여전히 문제가 나타나면

NSString *content = [NSString stringWithContentsOfURL:url 
              encoding:NSASCIIStringEncoding 
               error:nil]; 

, 네트워크에있을 가능성이 높습니다.

업데이트 - 오류

당신은이 같은 오류를 확인하실 수 있습니다 확인 :

NSError* error; 
NSString *content = [NSString stringWithContentsOfURL:url 
              encoding:NSASCIIStringEncoding 
               error:&error]; 
if (!content) { 
    if (error) { 
     NSLog (@"error %@",error); 
     //handle error 
    } 
else { 
    //do something with content 
} 

+1

오류에 대해'nil'을 전달하는 것은 좋지 않습니다. 특히 네트워크 호출을 할 때 오류 검사가 중요합니다. – rmaddy

+0

@maddy, 나는 알고있다. (내 업데이트 된 답변을 보았습니까?) 헨리가 갈 수 있도록 기본 방법을 보여주고 싶었습니다. – foundry

+0

타임 스탬프에서 볼 수 있듯이 업데이트 전에 주석을 달았습니다. BTW - 업데이트 된 코드가 잘못되었습니다. 먼저'error' 변수를 확인하지 마십시오. 항상 메소드의 반환 값을 확인하십시오. 이 경우'nil '을 검사하십시오. 결과가'nil' 인 경우에만'error'를 확인하는 것이 안전합니다. – rmaddy

0

(는 매디의 의견 다음 고정은) 가끔은 그냥 스펙을 읽어 야지. "오류 :"매개 변수가 누락되었습니다.

NSString *content = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:&errorMsg]; 
0
NSURL *url = [NSURL URLWithString:@"http://www.funnynewsletter.tk/files/file.txt"]; 

NSError *error; 
NSString *urlContent = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error]; 

    if(error!=nil) 
{ 


    NSLog(@"Error %@",error); 

}