【问题标题】:NSString to NSurlNSString 到 NSurl
【发布时间】:2011-06-23 15:27:27
【问题描述】:

无法让 NSSTRING 转换为 NSURL,item.image 保存了我通过 xml 获取的图像的 url

NSString *urlString = [NSString stringWithFormat:@"%@", item.image];
NSURL *url = [NSURL URLWithString:urlString];

NSLog(@"string> %@ ", urlString);
NSLog(@"url> %@ ", url);

2011-06-23 11:18:49.610 Test[10126:207] string> http://www.harlemfur.com/images/Dog_Olive.jpg       
2011-06-23 11:18:49.611 Test[10126:207] url> (null) 

如果我尝试:

NSString *urlString = [NSString stringWithFormat:@"%@", item.image];
NSURL *url = [NSURL fileURLWithPath :urlString];

2011-06-23 11:22:08.063 Test[10199:207] string> http://www.harlemfur.com/images/Dog_Olive.jpg

2011-06-23 11:22:08.064 Test[10199:207] url> %0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20http://www.harlemfur.com/images/Dog_Olive.jpg%0A%20%20%20%20%20%20%20%20%20%20%20%20 -- / 

【问题讨论】:

  • 无法复制。问题一定出在 item.image 上。它到底是什么类型的?
  • 这些行是否就这样出现在您的代码中?直接一个接一个(构造和记录)?

标签: iphone objective-c ios4 iphone-sdk-3.0


【解决方案1】:

NSString 制作URL 时,别忘了先编码,所以试试这个:

NSString *urlString = [NSString stringWithFormat:@"%@", item.image];
NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];  

对于 IOS ≥ 9.0 使用

NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];

【讨论】:

  • 谢谢,但这是我得到的打印输出:2011-06-23 11:41:34.796 Test[10609:207] string> harlemfur.com/images/Dog_Olive.jpg 2011-06-23 11:41:34.797 Test [10609:207] 网址> %0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20http://www.harlemfur.com/图像/Dog_Olive.jpg%0A%20%20%20%20%20%20%20%20%20%20%20%20
  • 那你应该检查你的item.image,确保没有隐藏字符。查看 NSString 文档以了解如何修剪字符串。
  • 你说得对,我的 xml 中有多余的空格,谢谢老兄,就像一个魅力
  • 只是一个快速更新,stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding 对于 IOS ≥ 9.0 已弃用。你应该使用:stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]
【解决方案2】:

一切正常,如果您想在 NSLog 中获取要打印的 URL,请使用:

NSLog(@"url> %@ ", [url absoluteString]);

【讨论】:

  • 可以直接在 Objective-C 中打印对象。它调用description 方法。与 NSURL 配合得很好。
【解决方案3】:

item.image 不仅包含 URL,而且以换行符和空格开头。先删除那些,你应该没事。

【讨论】:

    【解决方案4】:

    在斯威夫特中:

    NSURL(fileURLWithPath: item.image!)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 2011-07-15
      • 1970-01-01
      • 2012-02-02
      • 2012-04-05
      • 2011-12-26
      相关资源
      最近更新 更多