0

jsonviewer.stack.huでフォーマットされたJSONソース:

Jsonフォーマッター

私の解析方法(簡略化):

- (void)parseMethod {

    // OTHER STUFF

    arrayList = [[NSMutableArray alloc] init];    

    NSURL *url2 = // THE URL SOURCE OF JSON OBJECT, ON A REMOTE SERVER

    NSURLRequest *request2 = [NSURLRequest requestWithURL:url2 cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:5.0];

    AFJSONRequestOperation *operation2 = [AFJSONRequestOperation
                                         JSONRequestOperationWithRequest:request2
                                         success:^(NSURLRequest *request2, NSHTTPURLResponse *response2, id JSON)
                                         {
                                             arrayList = [JSON objectForKey:@"list"];

                                             // HERE I TRIED TO WRITE [arrayListPrev removeObjectAtIndex:0];

                                             NSMutableArray *arrayList1 = [arrayList valueForKey:@"list1"];
                                         }
                                         failure:^(NSURLRequest *request2, NSHTTPURLResponse *response2, NSError *error2, id JSON2) { 
                                         }];
    [operation2 start];

}

問題: 解析後、「list」という名前の配列のFIRST OBJECTを削除したいのです。これは、UITableViewの行に、最初の配列(list array-> array number 0-)を除く配列のlist1のすべての値を入力する必要があるためです。 > list1の値0)。私はコードを試しました:

[arrayList removeObjectAtIndex:0];

いくつかの位置にありますが、アプリがエラーでクラッシュします:'-[__ NSCFArray removeObjectAtIndex:]:不変オブジェクトに送信された変異メソッド' ...したがって、解析後にそのNSMutableArray * listから最初のオブジェクト(配列番号0)を削除する最良の方法は何ですか、to ELIMINATE 0オブジェクトのlist1値?ありがとう!

4

4 に答える 4

3

あなたが書いているにもかかわらずarrayList = [[NSMutableArray alloc] init];

ここで、私が推測するように、単純な不変配列インスタンスを割り当てます

arrayList = [JSON objectForKey:@"list"];

代わりにこれを行うことができます:

arrayList = [[JSON objectForKey:@"list"] mutableCopy];
[arrayList removeObjectAtIndex:0];
于 2013-01-31T17:40:06.800 に答える
2

NSArray問題は、 ではなく で作業していることですNSMutableArray。これはおそらく、パーサーが不変オブジェクトを返すという事実によるものです。あなたがする必要があるのは、それを取り、それNSArrayを使って を作成しNSMutableArray、最初のオブジェクトを削除することです

NSMutableArray *_arrayList = [NSMutableArray arrayWithArray:arrayList];
[_arrayList removeObjectAtIndex:0];
// dont forget to store your array wherever you need it
于 2013-01-31T17:35:45.057 に答える
2

エラーは、配列に不変型の値があることを示しています。可変コピーを使用するか、メソッドで-arrayWithArray:arrayList を初期化してください。問題が解決することを願っています。

注:メソッドNSMutableArrayで初期化するために割り当てますinitWithCapacity

于 2013-01-31T17:35:52.477 に答える
0

他の人が示唆しているように、あなたはミュータブル(編集可能)ではないNSArrayを使用しています。新しい関数を使用して、入力を追加します。

NSMutableArray *mutableArrayList = [arrayList mutableCopy];

これにより、配列の可変コピーが作成されます。

于 2013-01-31T17:42:43.083 に答える