2012-03-06 2 views
0

RSS 피드를 구문 분석하고 사전에 각 항목을 배열에 저장하고 있습니다. 이 모든 잘 작동하지만 피드에서 링크를 열려고하면 아무 일도 일어나지 않습니다. NSLogged 버튼을 누를 때 URL이 정확 해 보입니다. URL에서 공백, 개행 및 탭을 제거했지만 확실하지 않습니다. 날씨 나는 이것을 올바르게했다. 어떤 아이디어?RSS 피드 링크가 열리지 않습니다.

나는 프로그램의 다른 부분에서 다른 요소를 사용하고 있기 때문에 초기 구문 분석과 저장이 잘되어 있으므로 문제와 직접 관련된 코드 만 보여줄 것입니다. URL을

libraryRSSString = [[stories objectAtIndex: 0] objectForKey: @"link"]; 
[libraryRSSString stringByReplacingOccurrencesOfString:@" " withString:@""]; 
[libraryRSSString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

하고 링크를 열기위한 조치를 포맷

, 나는 같이 링크를 하드 코딩 할 때 작업이 작동하는지 지금 언급 할 것이다 @ "http://www.google.com";

-(IBAction)LibraryRSSAction{ 

     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:libraryRSSString]]; 

     NSLog(@"button pressed"); 

     NSLog(@"the link is %@",libraryRSSString); 

} 

답변

0

URL을 잘못된 방법으로 인코딩하려는 경우 this을 시도하십시오.

EDIT (위의 링크에있는 코드를 포함) :

가 "는 NSString +에는 urlencoding"라는 이름의 범주를 만들기,있는 NSString + URLEncoding.h하고있는 NSString + URLEncoding.m을 파일.

있는 NSString + URLEncoding.h :

#import <Foundation/Foundation.h> 
@interface NSString (URLEncoding) 
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding; 
@end 

있는 NSString + URLEncoding.m :

#import "NSString+URLEncoding.h" 
@implementation NSString (URLEncoding) 
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding { 
    return (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, 
       (CFStringRef)self, 
       NULL, 
       (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", 
       CFStringConvertNSStringEncodingToEncoding(encoding)); 
} 
@end 

지금 당신이 사용하고자하는 파일의 파일있는 NSString + URLEncoding.h을 가져 방법과 그냥 할 libraryRSSString = [[[stories objectAtIndex: 0] objectForKey: @"link"] urlEncodeUsingEncoding:NSUTF8StringEncoding];

+0

감사합니다. 나는 메소드를 호출 할 때 'NSString이 urlEncodeUsingEncoding에 응답하지 않을 수 있습니다'라는 경고를 받지만 어쨌든 컴파일 링을 시도하고 버튼이 눌려지면 SIGBART로 연결됩니다. – sjhtaylor

+0

카테고리를 가져 왔습니까? – fbernardo

+0

답변을 수정했습니다. – fbernardo

0

링크는 http : // 접두사로 abl 수 있어야합니다 전자가 열린다. URL에 http 접두어가 없을 수도 있습니다. google.com은 http : // 접두어를 사용했기 때문에 작동했습니다.

+0

그는 여전히 잘못된 방식으로 URL을 인코딩하고 있습니다. 공백을 제거하지 않고 인코딩하면됩니다. – fbernardo

+0

링크는 http : // 접두어를 포함한 완전한 URL이며 하드 코드 된 경우 작동합니다. URL을 인코딩하는 표준 방법이 있는지 물어볼 수 있습니까? – sjhtaylor