报错 -[__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类型数据。

其实这个问题就是setArray和 addObject的区别问题。

你可能感兴趣的:(报错 -[__NSArrayM length]: unrecognized selector sent to instance 0x7ffccd444180)