无法解决错误“[__NSCFBoolean length]: unrecognized selector sent to instance”
Posted
技术标签:
【中文标题】无法解决错误“[__NSCFBoolean length]: unrecognized selector sent to instance”【英文标题】:Unable to solve the error "[__NSCFBoolean length]: unrecognized selector sent to instance" 【发布时间】:2016-09-30 14:17:30 【问题描述】:代码
NSDictionary *dict = [self.catArray objectAtIndex:indexPath.row];
NSURL *U1 =[NSURL URLWithString:[dict objectForKey:@"img"]];
[DownloadManager downloadImageWithURL:[NSURL URLWithString:[dict objectForKey:@"img"]] completionBlock:^(BOOL succeeded, UIImage *image)
if (succeeded)
[cell.iconImgView setImage:image];
];
出现错误
[__NSCFBoolean length]: 无法识别的选择器发送到实例
【问题讨论】:
哪一行导致了这个问题?该错误似乎很明显,但它可能发生在不同的行...... 你在使用 Xcode 8 吗? 这可能意味着dict[@"img"]
返回一个代表布尔值的 NSNumber
而不是您预期的 NSString
。
没有发布的代码调用length
。
@Avi: URLWithString:
将在内部调用length
。 NSDictionary *dict = @@"a":@(TRUE);NSURL *url = [NSURL URLWithString:[dict objectForKey:@"a"]];
会导致同样的错误。
【参考方案1】:
您的问题在于这一行:
NSURL *U1 =[NSURL URLWithString:[dict objectForKey:@"img"]];
问题是由您假设的事实引起的:
[dict objectForKey:@"img"]
返回一个NSString
,而实际上它返回一个代表布尔值的NSNumber
。
您需要找出字典中的数据不正确的原因,或者您需要使用正确的键来获取 URL。
【讨论】:
【参考方案2】: [ [dict objectForKey:@"img"] stringValue];
使用上述代码获取字符串值
【讨论】:
以上是关于无法解决错误“[__NSCFBoolean length]: unrecognized selector sent to instance”的主要内容,如果未能解决你的问题,请参考以下文章