0

だから私はこの NSMutableDictionary オブジェクトを持っています:

pdata=[[NSMutableDictionary alloc] initWithObjectsAndKeys:
       @"",@"pid",
       @"",@"pname",
       [[NSMutableArray alloc] initWithCapacity:1],@"ilist",
       nil];

次に、このオブジェクトを次のように別のオブジェクトにコピーします。

NSMutableDictionary *pdataCopy=[[NSMutableDictionary alloc] initWithDictionary:pdata copyItems:TRUE];

しかし、これを行うpdataCopy.ilistと、NSMutableArray ではなく NSArray になりました。

内部のプロパティの可変性を維持しながら、辞書オブジェクトをコピーするにはどうすればよいですか?

4

2 に答える 2

2

実際にはできません。次の方法で変更可能な配列を取得できます

NSMutableArray *mutableArray = [pdataCopy.ilist mutableCopy]
于 2012-11-02T14:58:11.893 に答える
0

次の 3 つのオプションがあります。

  1. 指定しないcopyItems:YES
  2. コピー後にディクショナリをスキャンし、必要に応じて NSArrays を NSMutableArrays に置き換えます ( を使用mutableCopy)。
  3. それ自体の変更可能なコピーを生成することによって応答する NSMutableArray の独自のサブクラスを作成しますcopyWithZone(そして、辞書でそのクラスのオブジェクトを使用します)。
于 2012-11-02T15:20:08.607 に答える