我正在为我的应用程序开发Twitter API。在我的应用程序中,我想在UITexField中以动态方式显示带有解析的xml链接的小URL。静态地,我能够在UITextField中显示小网址,但动态地我无法显示这个小网址。请帮帮我!
代码:静态(工作正常),
NSURL *url = [NSURL URLWithString"http://tinyurl.com/api-create.php?
url=https://gifts.development.xxxxx.edu/xxxx/Welcome.aspx?appealcode=23430"];
NSString *link = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil];
动态,
NSString * tiny = [NSString stringWithFormat:@"http://tinyurl.com/api-create.php? url=%@", shtUrl];//shtUrl is parsed string
NSURL *url = [NSURL URLWithString:tiny];
NSString *link = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil];
在上面,动态app运行没有警告和错误,但url没有显示,当我检查调试器,url和链接都显示为nil值。但是shtUrl正确显示整个url值。
我尝试了所有NSURL类和实例方法以及String方法。
答案 0 :(得分:1)
在你的代码的这一行:
NSString * tiny = [NSString stringWithFormat:@"http://tinyurl.com/api-create.php? url=%@", shtUrl];
'api-create.php?'之后有一个空格。这将导致您正在创建的格式化字符串中的空格,并可能导致URLWithString:
无法解析该网址并返回nil。
删除多余的空间(假设它确实存在,而不仅仅是剪切粘贴错误),看看是否能解决问题。
你正在构建一个小小的shtUrl
也可能包含需要进行urlencoded的特殊字符(即转义百分比。)尝试添加:
NSString * encodedShtUrl = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)shtUrl,
NULL,
(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
kCFStringEncodingUTF8 );
对shtUrl
进行编码,然后在创建encodedShtUrl
时使用tiny
:
NSString * tiny = [NSString stringWithFormat:@"http://tinyurl.com/api-create.php? url=%@", encodedShtUrl];
有关转义的详情,请参阅http://simonwoodside.com/weblog/2009/4/22/how_to_really_url_encode/。