Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用plist中的文本命名NSUserDefault_Ios_Nsuserdefaults - Fatal编程技术网

Ios 使用plist中的文本命名NSUserDefault

Ios 使用plist中的文本命名NSUserDefault,ios,nsuserdefaults,Ios,Nsuserdefaults,我想将一个值保存到NSUserDefaults,但我希望它的存储位置的名称基于从plist文件中获取的字符串值 例如,plist字典可能包含字符串apple、banana、orange,我希望将NSUserDefaults保存为以下内容:storedapple、storedbanana、storedorange 是否有一种方法可以创建必要的代码,以有效地结束以下代码(其中“storedapple”、“storedbanana”和“StoredRange”是使用plist中的“stored”和字符

我想将一个值保存到NSUserDefaults,但我希望它的存储位置的名称基于从plist文件中获取的字符串值

例如,plist字典可能包含字符串apple、banana、orange,我希望将NSUserDefaults保存为以下内容:storedapple、storedbanana、storedorange

是否有一种方法可以创建必要的代码,以有效地结束以下代码(其中“storedapple”、“storedbanana”和“StoredRange”是使用plist中的“stored”和字符串值以编程方式创建的):

假设字符串作为字符串值存储在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 * yourDictionary in yourArray)
    [standardUserDefaults setObject:yourDictionary[@"price"] forKey:[NSString stringWithFormat:@"stored%@",yourDictionary[@"fruit"]];
}
NSUserDefaults是一个类似于NSDictionary的容器,但具有稍微不同的规则,它会随着时间的推移持续存在,包括应用程序启动。它可以包含具有名称(键)和对象(值)的项。任何值都可以单独访问、添加或更改。它实际上是为了保存应用程序的用户选项,但也可以用于其他用途

设置、访问和修改
NSUserDefaults
项的示例:

NSUserDefaults*默认值=[NSUserDefaults standardUserDefaults]

要添加单个项目:
[默认设置setObject:@3 forKey:@applePrice]

要访问单个项目:
intprice=[[defaults valueForKey:@“applePrice”]intValue]

要修改单个项目:

[默认设置setObject:@4 forKey:@applePrice]

[NSString stringWithFormat:];???对人做一点研究。plist是否在
NSArray
[yourDictionary objectForKey:key]
更简单地说:
yourDictionary[key]
Flexicoder:这似乎非常接近,但我得到了一个错误:“NSArray”的@interace声明了选择器“objectForKey:”@MarkStoneham当你提出最初的问题时,你没有提到它是在数组中。对不起,我已经发布了示例plist。代码需要更改吗?稍加调整以适应我的代码,这就是答案。:)唯一的问题是,这会创建所有NsUserDefaults,而我只希望一次创建特定的NsUserDefaults。如何调整代码来实现这一点?有一个NSUserDefaults可以用于不同的事情,只是对每个独特的用法使用不同的键。对不起,可能没有正确解释我自己。此时,代码循环并创建所有NSUserDefaults(即storedapple、storedbanana、StoredRange),并将它们的值都设置为5(请参阅我在第一次后期编辑中添加的代码)。我希望能够做到的是一次只针对其中一个NSUserDefaults(即,只针对storedbanana并为其指定一个特定值)。这更有意义吗?
NSUserDefaults
是一个类似于
NSDictionary
的容器,但其规则略有不同,并且随着时间的推移会持续存在,包括应用程序启动。它可以包含具有名称(键)和对象(值)的项。任何值都可以单独访问、添加或更改。它实际上是为了保存应用程序的用户选项,但也可以用于其他用途。我在回答中添加了一些示例代码。
for (NSDictionary *dict in tableData) {
            NSString *key = [NSString stringWithFormat:@"stored%@", dict[@"fruit"]];
            [standardUserDefaults setObject:[NSNumber numberWithInt:5] forKey: key];
            [standardUserDefaults synchronize];
for (NSDictionary * yourDictionary in yourArray)
    [standardUserDefaults setObject:yourDictionary[@"price"] forKey:[NSString stringWithFormat:@"stored%@",yourDictionary[@"fruit"]];
}
for (NSDictionary* dict in yourArray) {
    NSString *price = dict[@"price"];
    NSString *key   = [NSString stringWithFormat:@"stored%@", dict[@"fruit"]];
    [standardUserDefaults setObject: price forKey: key];
}