1

我正在为我的应用程序开发 Twitter API。在我的应用程序中,我想在 UITexField 中动态显示带有解析的 xml 链接的小 url。静态地,我可以在 UITextField 中显示微小的 url,但动态地我无法显示微小的 url。请帮我!

代码:静态(工作正常),

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]; 

在上面,动态应用程序在没有警告和错误的情况下运行,但没有显示 url,当我检查调试器时,url 和链接都显示为 nil 值。但是 shtUrl 会正确显示整个 url 值。

我也尝试了所有 NSURL 类和实例方法以及 String 方法。

4

1 回答 1

1

在这行代码中:

NSString * tiny = [NSString stringWithFormat:@"http://tinyurl.com/api-create.php? url=%@", shtUrl];

'api-create.php?' 后面有一个空格。这将导致您正在创建的格式化字符串中出现空格,并且可能导致URLWithString:无法解析 url 并返回 nil。

删除多余的空间(假设它确实存在,而不仅仅是剪切粘贴错误),看看是否能解决问题。

您正在为其构建 tinyurl的 也可能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/

于 2010-07-01T14:02:01.743 回答