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を[NSNullnull]に最初に設定した理由は、3つの文字列のいずれかが空の場合、配列内のそのオブジェクトであるためです。このデータが私が通信しているサーバーへの呼び出しとして渡されるとき、物事をさらに先に台無しにすることはありません。

助けていただければ幸いです...私がやっていることはうまくいくはずですが、おそらくエラーは配列オブジェクトで[NSNullnull]を渡したことが原因だと思います。皆さんは状況についてもっと教えてくれます。

4

1 に答える 1

2

このような可変配列を作成します

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

と宣言seriesObjectsします

NSMutableArray *seriesObjects;

警告を削除するには

于 2012-07-30T03:09:06.253 に答える