使用plist中的文本命名NSUserDefaults

时间:2014-02-24 16:49:36

标签: ios nsuserdefaults

我想将值保存到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];

2 个答案:

答案 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"];