0

我正在尝试替换 NSMutableArray 中特定索引处的对象但是我收到此错误,如下所示

2012-07-30 14:50:11.380 PK[3588:907] -[__NSArrayI replaceObjectAtIndex:withObject:]: unrecognized selector sent to instance 0x1eded800
2012-07-30 14:50:11.383 PK[3588:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI replaceObjectAtIndex:withObject:]: unrecognized selector sent to instance 0x1eded800'
*** First throw call stack:
(0x357ae56b 0x35a8e97f 0x357b24fb 0x357b0c0d 0x35702e68 0x1082df 0x368528dd 0x3690c869 0x368528dd 0x3685288f 0x3685286d 0x368525c3 0x36852f41 0x36851359 0x3683f2e1 0x3683eb5b 0x385c05f3 0x385c0223 0x3577ec33 0x3577ebd7 0x3577d9d1 0x356fbc1d 0x356fbaa9 0x385bf33b 0x36865535 0x104175 0x344c6b20)
libc++abi.dylib: terminate called throwing an exception

我已在标头中将该数组声明为 NSMutableArray,因此它可广泛用于任何想要使用它的方法,下面展示了我在尝试设置 NSDictionary 对象时如何使用它。

//...

// Objects for keys that are for sendSeriesDictionary
    seriesObjects = [NSArray arrayWithObjects: [NSNull null], [NSNull null], [NSNull null], nil];


    if ([manufactureIdString length] != 0) {
        [seriesObjects replaceObjectAtIndex:0 withObject:IdString];
    }
    if ([modelIdString length] != 0) {
        [seriesObjects replaceObjectAtIndex:1 withObject:mIdString];
    }
    if ([subModelIdString length] != 0) {
       [seriesObjects replaceObjectAtIndex:2 withObject:sIdString];
    }

//..

当线程进入第一个 if 语句时,我得到上面列出的错误。我最初将 NSMutableArray 设置为 [NSNull null] 的原因是,如果 3 个字符串中的任何一个为空,则数组中的对象当这些数据作为对我正在与之通信的服务器的调用传递时,不会把事情搞得更糟。

任何帮助将不胜感激...我觉得我正在做的事情应该可以工作,但是我也认为错误可能是由于我在数组对象中传入 [NSNull null] 引起的..但这可能只是我的观察你们可以告诉我更多的情况。

4

1 回答 1

2

像这样创建一个可变数组

seriesObjects = [NSMutableArray arrayWithObjects: [NSNull null], [NSNull null], [NSNull null], nil];

并声明seriesObjects

NSMutableArray *seriesObjects;

删除警告

于 2012-07-30T03:09:06.253 回答