RSS提要链接未打开

时间:2012-03-06 12:09:20

标签: iphone ios xcode

我正在解析RSS提要并将每个项目存储在字典中,并将每个项目存储在一个数组中。这一切都很好,但是当我尝试从源中打开一个链接没有任何反应时,URL显示是正确的,因为我按下按钮时已经NSLogged它,我已从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);

}

2 个答案:

答案 0 :(得分:0)

您正在以错误的方式对网址进行编码,请尝试this

编辑(要在上面的链接中包含代码):

创建一个名为“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];

答案 1 :(得分:0)

链接应该具有http://作为前缀才能打开。您获得的URL可能没有http前缀。 google.com之所以有效,是因为它有http://前缀。