报错|报错 -[__NSArrayM length]: unrecognized selector sent to instance 0x7ffccd444180

报错|报错 -[__NSArrayM length]: unrecognized selector sent to instance 0x7ffccd444180
文章图片
NSURL *urlImage = [NSURL URLWithString:[arrURL objectAtIndex:i]]; 在用这句代码获取arrURL(NSArray类型)中的数据时报出如上错误。

1.经查发现错误原因是:URLWithString: 方法要求的参数是NSString类型。而从arrURL中获取的数据是NSArray类型数据。
2.出现上述现象的原因是arrURL中的数据对象有误:
muArrURL是NSMutableArray类型,muArrURL数据回传给arrURL。

[muArrURL addObject:[obj objectForKey:@"visitorURLArr"]];

[muArrURL addObject:[dic objectForKey:@"visitorURL"]];

从服务器获取数据时,[obj objectForKey:@"visitorURLArr"]是NSArray类型的数据(此数据中包含3条NSString类型数据)。
[dic objectForKey:@"visitorURL"]是NSString类型的数据

想法上是arrURL中应包含4个NSString类型数据。实际上是包含两个对象,NSString类型和NSArray类型。
解决方案:
[arrURL setArray:[obj objectForKey:@"visitorURLArr"]];

[arrURL addObject:[dic objectForKey:@"visitorURL"]];
用setArray方法,则arrURL中的数据为4条NSString类型数据。
【报错|报错 -[__NSArrayM length]: unrecognized selector sent to instance 0x7ffccd444180】其实这个问题就是setArray和 addObject的区别问题。

    推荐阅读