-2

NSObjectオブジェクトも送信しているクラスがありNSDictionaryます。クラスオブジェクトは、クラスNSDictionary内の変数であるネイティブタイプにすべてのエントリを設定しますNSObject

NSObject次に、このクラスを独自に渡したいNSMutableArrayのですが、これが発生するとアプリがクラッシュします。

以下は、クラスを呼び出して、NSObjectそれを に設定しようとするコードNSMutableArrayです。

NSArray *filteredArray = parsedDataArrayOfDictionaries; //dictionary entries are currently in nsstring format
SearchResultList *searchResultList = [[SearchResultList alloc]init];
NSMutableArray *testArray = [[NSMutableArray alloc] init];

int myCount = 0;

while (myCount <= [filteredArray count]) {
    //call class and pass current NSDictionary in array[myCount]
    [searchResultList assignSearchData:filteredArray[myCount]];
    searchResultList = (SearchResultList*)[testingDic objectForKey:@"myObject"];
    testArray[myCount] = searchResultList; //create array of nsobjectclassed, this is also where the app fails
    NSLog(@"%@", testArray[myCount]);
}

うまくいけば、これはある程度理にかなっています.whileステートメントの途中で少し迷っています...NSObjectクラスを取得してから配列に割り当てる必要があることはわかっています..しかし、これを行う方法がわかりません.助けていただければ幸いです。

4

2 に答える 2

1

配列のサイズを超えていますfilteredArray

while (myCount <= [filteredArray count]) {

読むべき

while (myCount <[filteredArray count]) {

インデックスは 0 から始まるため、配列のカウントは最後のオブジェクトのインデックスよりも 1 つ大きくなります。

正直なところ、あなたが達成しようとしていることはわかりませんが、whileステートメントの代わりに高速列挙を使用することを検討する必要があります

for (id obj in filteredArray) {

またはさらに洗練されたブロックベースの列挙

NSMutableArray *testArray = [[NSMutableArray alloc] init];
[filteredArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    //...
    [testArray addObject:obj];
}];
于 2012-08-13T00:36:38.147 に答える
-1

NSMutableArrayaddObjectを使用してみてください。には 'C' スタイルの [] 演算子はありませんNSMutableArray

于 2012-08-12T23:53:42.567 に答える