0

可変オブジェクトを次のように定義しました

NSMutableArray *scribbles;

それからviewDidLoad私はそれを初期化します

scribbles = [[NSMutableArray alloc] init];

最初のJSONページを取得した後、データを追加します

scribbles = JSON[@"scribbles"];

その後、2番目のページをロードし、配列にデータを追加してみます

NSMutableArray *mutableJson = [JSON[@"scribbles"] mutableCopy];
[scribbles addObjectsFromArray:mutableJson];

しかし、アプリがクラッシュしてmutating method sent to immutable objectエラーが発生します。

4

3 に答える 3

4

やったほうがいい:

scribbles = [JSON[@"scribbles"] mutableCopy];

2 番目のページの変更可能なコピーを作成する必要はないので、次のようにします。

[scribbles addObjectsFromArray:JSON[@"scribbles"]];

説明する:

scribbles = [[NSMutableArray alloc] init]; // mutable, OK
scribbles = JSON[@"scribbles"]; // immutable, you have to make mutable copy
[scribbles addObjectsFromArray:mutableJson]; // scribbles was immutable, the parameter doesn't need to be mutable
于 2013-03-11T09:43:32.473 に答える
0
scribbles = JSON[@"scribbles"];

この行により、落書きオブジェクトが不変になります。代入する代わりにオブジェクトを追加する必要があります。さらにオブジェクトがある場合は、次のように不変配列から可変配列を作成できます

scribbles = [NSMutableArray arrayWithArray:JSON[@"scribbles"]];
于 2013-03-11T09:43:10.460 に答える
-1

これの代わりに:

[scribbles addObjectsFromArray:mutableJson];

これを行う:

scribbles = [NSMutableArray arrayWithArray:JSON[@"scribbles"]];
于 2013-03-11T09:44:22.100 に答える