最近、私はkey-> value(NSArray)のような形で辞書を削除するポストを作成しました。コピーされた辞書をクリアする
私は2つのNSDictionaryを持っていますが、最初はデータで、2番目のキーには最初のすべてのキーが含まれている必要がありますが、そのキーの空のデータです。データは後で追加/削除されます。これは私がメインのデータ辞書(self.viewModel.releaseDict)からコピーを作成する方法である:
_releaseFormsDictCopy = [NSMutableDictionary dictionaryWithDictionary:self.viewModel.releaseDict];
私はオブジェクト(2 NSDictionaries)が異なるメモリを持っていることを、確認された場合。
しかし、この方法で私は「クリア」のコピーがする場合:
-(void)clearAllArraysInsideKeys{
for(id key in self) {
NSMutableArray *arr = [self objectForKey:key];
[arr removeAllObjects];
}
}
それは両方の辞書だけでなく、コピーからすべてのデータをフラッシュすることが表示されます。どのように最初のNSDictionaryをクリアするのを防ぐには?
私はそれがうまくいくと思います、ありがとう。私は単純な解決策を試みた - NSArray * arr = @ []; _releaseFormsDictCopy = [NSMutableDictionary dictionaryWithObjects:arr forKeys:_sectionsArray];ただし、例外がスローされます。私はここで何をやったの? –
あなたは不変の配列を作成しましたので、後でいつかそれを可変長として使用しようと思いますか? – Wain
いいえ、その行に例外がスローされます.NSArray * arr = @ []; _releaseFormsDictCopy = [NSMutableDictionary dictionaryWithObjects:arr forKeys:_sectionsArray]; –