我正在解析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);
}
答案 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://前缀。