[__NSCFString absoluteString]:无法识别的选择器发送到实例,尝试将url转换为字符串

时间:2014-12-17 22:44:17

标签: ios objective-c sdwebimage

希望简单地将解析图像url转换为字符串,以便我可以使用SDWebImage进行缓存等。

经过研究,我发现我可以通过在NSURL上调用absoluteString从url转换为string。我也试过这个:

NSURL *theUrl = [[obj objectForKey:@"image"] url];


NSString *finalUrl = [theUrl absoluteString];

[cell.carPhoto setImageWithURL:[NSURL URLWithString:finalUrl]
                           placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

但是我也遇到了同样的错误

NSString *finalUrl = [theUrl absoluteString];

有什么想法吗?顺便说一下,obj是一个PFObject

2 个答案:

答案 0 :(得分:5)

错误消息告诉您,您有一个__NSCFString的实例,并且您正在调用absoluteString__NSCFString是一种NSString,因此情况只是您希望(由于某种原因)您拥有NSURL,但实际上您拥有NSString - 所以您不需要致电absoluteString

理解为什么你认为自己有NSURL并且在这段代码中是否会有一个是很好的。输入应该是一致的,但如果没有,你可以检查类并决定如何获得字符串版本。

答案 1 :(得分:1)

您似乎正在尝试使用此行将NSString转换为NSURL

NSURL *theUrl = [[obj objectForKey:@"image"] url];

但这不是您将NSString转换为NSURL的方式,因此您的NSString并未根据需要更改为NSURL。相反,似乎它仍然是NSString,因此错误。

如果通过访问将NSString的唯一目的转换回下一行的NSURL,则无需将NSURL转换为NSString它的absoluteString财产;但是,如果 实际上需要theURL作为NSURL,原因超出了您发布的代码(例如,如果您需要访问NSURL在您的代码中稍后变量),请尝试将此字符串正确转换为网址:

NSURL *theUrl = [NSURL URLWithString:[obj objectForKey:@"image"]];