私は ObjectiveC と Xcode を初めて使用し、間違いを犯します。このコードは、getAllRecords から辞書 (myDataPlist) を取得します。次に、(myDataPlist) 内の辞書 (1 レコード) の変更可能なコピーを作成し、それを使用して 1 つのフィールドを復号化します。これは完全に機能します。そのレコード (mutCopy) だけを返します。これも機能します。私の問題は、元の辞書 (myDataPlist) の変更です。復号化されたレコードは、(myDataPlist) でも復号化されます。2 つの NSLog(@"%@",myDataPlist) は異なる結果を返します。私は何かが欠けているに違いない。(myDataPlist) が変更されるのはなぜですか?
助けてくれてありがとう。
-(NSDictionary *)getRecordForKey:(NSString *)key{
NSDictionary *myDataPlist = [self getAllRecords];
NSMutableDictionary *mutCopy = [[myDataPlist valueForKey:key] mutableCopy];
NSArray *keys = [mutCopy allKeys];
NSData *tData = [[NSData alloc]init];
NSLog(@"%@",myDataPlist);
for (int x = 0; x <= [keys count] - 1; x++) {
if (![keys[x] isEqualToString:@"Template"] && ![keys[x] isEqualToString:@"RecNum"]) {
NSMutableArray *myArray = [mutCopy objectForKey:keys[x]];
tData = myArray[1];
NSString *tString = [tData decryptData:tData withKey:self.settingsManager.masterPad];
myArray[1] = tString;
[mutCopy setObject:myArray forKey:keys[x]];
}
}
NSLog(@"%@",myDataPlist);
return mutCopy ;
}