无法创建可变数组 iOS
Unable to make mutable array iOS
我是 iOS、
的新手
我正在 NSUserDefaults
、
中存储字典数组
我现在要做的是编辑存储在 NSUserDefaults
中的字典数组。
这是我写的代码,但是在这一行崩溃了
[array[0] setObject:updateMonth forKey:@"Month"];
并说:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFDictionary
setObject:forKey:]: mutating method sent to immutable object
代码片段:
存储:
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"MONTHLY_BUDGET"];
我的数据是
(
{
Amount = 1;
Month = "July 2017";
isMonthlySet = 1;
}
)
正在检索:
array = [[[NSUserDefaults standardUserDefaults] objectForKey:@"MONTHLY_BUDGET"] mutableCopy];
NSString *updateMonth = @"ABCD";
[array[0] setObject:updateMonth forKey:@"Month"];
请帮忙,为什么它不起作用?
试试这个代码
[[array[0] mutableCopy] setObject:updateMonth forKey:@"Month"];
你对数组的处理是正确的
array = [[[NSUserDefaults standardUserDefaults] objectForKey:@"MONTHLY_BUDGET"] mutableCopy];
但是数组包含 NSDictionary
而不是 NSMutableDictionary
所以你需要使用 mutableCopy
希望你清楚
编辑
您应该使用可读的代码,以便您将来轻松更改
使用下面的代码
NSMutableArray *array = [[[NSUserDefaults standardUserDefaults] objectForKey:@"MONTHLY_BUDGET"] mutableCopy];
NSMutableDictionary *dictData = [array[0] mutableCopy]
// Set value
[dictData setObject:updateMonth forKey:@"Month"];
// 赋值给数组返回
[array replaceObjectAtIndex:0 withObject:dictData]
Change UserDefault
[[NSUserDefaults standardUserDefaults] setObject:[array copy] forKey:@"MONTHLY_BUDGET"];
我是 iOS、
的新手我正在 NSUserDefaults
、
我现在要做的是编辑存储在 NSUserDefaults
中的字典数组。
这是我写的代码,但是在这一行崩溃了
[array[0] setObject:updateMonth forKey:@"Month"];
并说:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object
代码片段:
存储:
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"MONTHLY_BUDGET"];
我的数据是
(
{
Amount = 1;
Month = "July 2017";
isMonthlySet = 1;
}
)
正在检索:
array = [[[NSUserDefaults standardUserDefaults] objectForKey:@"MONTHLY_BUDGET"] mutableCopy];
NSString *updateMonth = @"ABCD";
[array[0] setObject:updateMonth forKey:@"Month"];
请帮忙,为什么它不起作用?
试试这个代码
[[array[0] mutableCopy] setObject:updateMonth forKey:@"Month"];
你对数组的处理是正确的
array = [[[NSUserDefaults standardUserDefaults] objectForKey:@"MONTHLY_BUDGET"] mutableCopy];
但是数组包含 NSDictionary
而不是 NSMutableDictionary
所以你需要使用 mutableCopy
希望你清楚
编辑
您应该使用可读的代码,以便您将来轻松更改
使用下面的代码
NSMutableArray *array = [[[NSUserDefaults standardUserDefaults] objectForKey:@"MONTHLY_BUDGET"] mutableCopy];
NSMutableDictionary *dictData = [array[0] mutableCopy]
// Set value
[dictData setObject:updateMonth forKey:@"Month"];
// 赋值给数组返回
[array replaceObjectAtIndex:0 withObject:dictData]
Change UserDefault
[[NSUserDefaults standardUserDefaults] setObject:[array copy] forKey:@"MONTHLY_BUDGET"];