我想将值保存到NSUserDefaults,但我希望它存储的位置的名称基于从plist文件中获取的字符串值。
例如,plist字典可能包含字符串apple,banana,orange,我想将NSUserDefaults保存为:storedapple,storedbanana,storedorange。
有没有办法可以创建必要的代码来有效地结束以下代码(其中'storedapple','storedbanana'和'storedorange'是使用'stored'和plist中的字符串值以编程方式创建的):
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
[standardUserDefaults setObject:[NSNumber numberWithInt:1] forKey:@"storedapple"];
[standardUserDefaults synchronize];
我如何从plist中提取字符串,假设它在plist设置中存储为字符串值,如下所示:
<array>
<dict>
<key>fruit</key>
<string>apple</string>
<key>key1</key>
<string>data1</string>
</dict>
<dict>
<key>fruit</key>
<string>banana</string>
<key>key2</key>
<string>data2</string>
</dict>
</array>
编辑 - 我现在使用的代码是:
for (NSDictionary *dict in tableData) {
NSString *key = [NSString stringWithFormat:@"stored%@", dict[@"fruit"]];
[standardUserDefaults setObject:[NSNumber numberWithInt:5] forKey: key];
[standardUserDefaults synchronize];
答案 0 :(得分:1)
使用
创建密钥for (NSDictionary * yourDictionary in yourArray)
[standardUserDefaults setObject:yourDictionary[@"price"] forKey:[NSString stringWithFormat:@"stored%@",yourDictionary[@"fruit"]];
}
答案 1 :(得分:1)
for (NSDictionary* dict in yourArray) {
NSString *price = dict[@"price"];
NSString *key = [NSString stringWithFormat:@"stored%@", dict[@"fruit"]];
[standardUserDefaults setObject: price forKey: key];
}
NSUserDefaults是一个类似于NSDictionary的容器,但规则略有不同,并且随着时间的推移它会持续存在,包括应用程序启动。它可以包含具有名称(键)和对象(值)的项目。可以单独访问,添加或更改任何值。它实际上是为了保存应用程序的用户选项,但也可以用于其他事情。
示例设置,访问和修改NSUserDefaults
项目:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
添加单个项目:
[defaults setObject: @3 forKey:@"applePrice"];
访问单个项目:
int price = [[defaults valueForKey:@"applePrice"] intValue];
修改单个项目:
[defaults setObject: @4 forKey:@"applePrice"];