即使在使用字符串初始化之后,NSURL 对象也是 nil

Posted

技术标签:

【中文标题】即使在使用字符串初始化之后,NSURL 对象也是 nil【英文标题】:NSURL object is nil even after initialization with a string 【发布时间】:2013-02-28 05:05:59 【问题描述】:

我有一个字符串如下(实际上是一个链接http://xxx.xx.xxx.xxx:xxxx/goat/mainMenuNew.png (x 替换为 ip 地址)

我想将其转换为 URL。以下是我所做的,

NSURL *imageUrl = [NSURL URLWithString:objUserInfo.photoLink];

也试过allocinitWithString

但是,imageUrl 在这两种情况下都为零。

请让我知道我哪里出错了。

【问题讨论】:

你确定 objUserInfo.photoLink 不是 nil 吗? 是的,它不是零。我确实在将它作为参数传递之前打印了它。 @BenTrengrove 所说的。此外,值得添加 NSLog() 或其他内容以确保它不是格式错误的 URL;如果是,您的 NSURL 对象将为 nil。 @bgoers 局部变量默认为strong ARC。 @Raj 你能 NSLog objUserInfo.photoLink 在这里打印日志吗?另外,NSLog imageUrl 并在此处打印日志。 【参考方案1】:

您可以尝试以下方法:

检查objUserInfo.photoLink是否仍然包含字符串,在转换为URL之前记录它

如果它确实尝试使用以下方法修剪您的字符串:

[objUserInfo.photoLink stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
如果问题仍然存在,请检查 san 的答案以添加百分比转义

【讨论】:

【参考方案2】:

添加这个,你的链接是否包含空格。

NSString *urlStr =[objUserInfo.photoLink stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *imageUrl = [NSURL URLWithString:urlStr];

将此链接粘贴到 Safari:http://www.google.com/search?q=I%20Love%20You 输入,您将了解代码的作用。

【讨论】:

谢谢你,它的工作,但 url 前面有以下字符 %0A%20%20%20%20%20%20%20%20。有它正常吗? @Raj 您一定已经从某些文本中解析了 URL 字符串,并且最终得到了前导回车符和空格。使用“rptwsthi”的答案来修剪前导空格和换行符。 是的,%0A 或 %20 在处理 URL 时会替换一些特殊字符。不用担心。我不记得了,也许 %20 = 空格。始终使用 Internet URL 进行操作 @Raj sang 说得对 %20 需要填充您的 URL 空白,因此您必须使用 %20 +1 对 URL 字符串进行编码以获得良好的 Answer Sang

以上是关于即使在使用字符串初始化之后,NSURL 对象也是 nil的主要内容,如果未能解决你的问题,请参考以下文章

self.navigationController 即使在嵌入到导航控制器之后也是“空”

即使在经过身份验证的中间件之后,Express req.user 也是可选的

“需要授权才能执行该操作”消息,即使在单击“允许”之后也是如此

Android 每次都会询问我要使用哪个应用程序,即使在我将我的应用程序设置为默认应用程序之后也是如此。为啥?

ZAP 被动扫描规则是扫描的一部分,即使在禁用它们之后也是如此

即使在显式包含之后,EF Core“InvalidOperationException:包含已用于非实体可查询”的导航属性也是如此