私はiosプログラミングが初めてで、先月この学習を始めたばかりです。
この 2 日間、立ち往生している問題が 1 つあります。この問題を自分で解決する方法がわかりません。
そこで、この問題を解決するために、あなたにお願いしたいと思います!
これは私が得ているエラーです。
[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object'
NSUserDefaults から取得したオブジェクトは常に不変であるため、このエラーが発生することを知りました。
そのため、新しいオブジェクトを追加する配列を mutableCopy します。
NSMutableArray *temporaryArray = [users[1][@"users"] mutableCopy];
[temporaryArray addObject:myData];
users[1][@"users"] = temporaryArray;
ただし、もちろん、上記の 3 行目では、同じエラーが発生します。
このエラーが発生する理由はわかっていますが、この問題を解決するためのコーディング方法がわかりません。解決策は非常に単純で基本的なものだと思いますが、その方法がわかりません。
誰かがこの問題を解決するのを手伝ってくれたら幸いです!!
事前にどうもありがとうございました!
- (void)saveData
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *users = [userDefaults objectForKey:@"users"];
NSDictionary *myData = @{@"name":@"test", @"birthdate":@"1981-01-01", @"sex":@"male"};
NSMutableArray *temporaryArray = [users[1][@"users"] mutableCopy];
[temporaryArray addObject:myData];
users[1][@"users"] = temporaryArray;
[userDefaults setObject:users forKey:@"users"];
[userDefaults synchronize];
[self.target performSelector:self.action withObject:@"test.png"];
[self dismissViewControllerAnimated:YES completion:nil];
}
「ユーザー」配列の構造。
(
{
label = "\U81ea\U5206";
users = (
{
birthdate = "2013-10-12";
name = Test;
sex = "\U7537\U6027";
}
);
},
{
label = "Family(\U5bb6\U65cf)";
users = (
);
},
{
label = "Friends(\U53cb\U9054)";
users = (
);
}
)