NSURL 总是 nil 使用 URLWithString
Posted
技术标签:
【中文标题】NSURL 总是 nil 使用 URLWithString【英文标题】:NSURL always nil using URLWithString 【发布时间】:2014-03-22 04:01:31 【问题描述】:我正在从 API 接收图像的 url,这些图像我想在集合视图中显示。
这是我的代码
NSString *str = [imgArray objectAtIndex:indexPath.item];
frstUrl=[NSURL URLWithString:str]; // <-- (APP Crash here )
[imageView setImageWithURL:frstUrl
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
[imageView setImageWithURL:frstUrl];
错误信息:
[__NSArrayI 长度]:无法识别的选择器发送到实例 0xd769560
str
对象的NSLog
返回:
str=( ("hello.com/projects/newapp/uploads/…;, "hello.com/projects/newapp/uploads/…;,
【问题讨论】:
能否展示一下您的 imgArray 数组内容? 检查 str 的类以确保它实际上是一个字符串。 看来对[imgArray objectAtIndex:indexPath.item];
的调用实际上是给你另一个NSArray
。
@GenieWanted frstUrl
从未创建 - 应用在创建过程中崩溃。
在NSLog中检查你的str(@"str :%@", str);
【参考方案1】:
该错误告诉您从imgArray
检索到的对象不是NSString
,而是它本身就是NSArray
。检查您检索到的内容(NSLog
它或在调试器中检查它),您会发现它是一个数组。
例如,如果imgArray
中的关联对象本身返回另一个数组,那么您必须从中获取详细信息。例如,如果该数组中的第一项是图像 URL 字符串,那么您将执行以下操作:
NSArray *imgDetailsArray = imgArray[indexPath.item];
// let's assume that the first item in that array was the URL string, so let's grab the first item
NSString *str = imgDetailsArray[0];
// now we can use that string
frstUrl=[NSURL URLWithString:str];
[imageView setImageWithURL:frstUrl
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
[imageView setImageWithURL:frstUrl];
【讨论】:
我已经用调试器检查了它,imgArray 和 NSSting 返回相同数量的元素,但问题在这里 frstUrl=[NSURL URLWithString:str]; // @user3382857 问题是你的imgArray
不是一个简单的字符串数组。它似乎是一个数组数组。所以[NSURL URLWithString:str]
返回一个数组,而不是字符串。您可能想要NSLog
imgArray
并编辑您的问题以包含结果。你说你登录了str
并且“它的返回图像 url 和它返回的 url 数量是 10”。这就是我的观点。这不是一个简单的字符串。
我明白了你的意思,我收到了类似 str=((这里是我的 10 网址))的回复,我 cnt 分享我的网址,请原谅
@user3382857:如果它被记录为( ( oneArray, secondArray ... ) )
,带有两组括号,那么您的 URL 数组包含在另一个数组中,正如 Rob 所说,[imgArray objectAtIndex:indexPath.item]
正在返回一个数组因为这就是imgArray
中的内容。以上是关于NSURL 总是 nil 使用 URLWithString的主要内容,如果未能解决你的问题,请参考以下文章
Convert String to NSURL is return nil in swift
IOS Swift Amazon S3 传输实用程序 - nil 与预期的参数类型 nsurl 不兼容