如何使用设置包中的多值标题和值

时间:2013-05-08 22:14:49

标签: ios settings.bundle multivalue

我在应用的设置包中定义了多值设置(位置) 标题被定义为长标题,例如,"伦敦"并且设置的相应值部分定义为" 1"。

[编辑]

要展开此问题,我将添加有关多值设置的更多信息:

this is a screenshot of the multi value setting

如何检索项目0处的LONDON标题。如上所述,当我检索objectForKey或valueForKey时,我总是得到1。我想显示字符串" LONDON"来自应用程序标签中的标题,但在核心数据中使用值1。注意:我在应用程序运行之前已在设置中设置了值,因此它确实返回一个值,但值始终为1,因为标题似乎无法访问。

4 个答案:

答案 0 :(得分:12)

您应将“默认值”值设置为“1” - 只需从“值”列表中选择第0项。

答案 1 :(得分:4)

我遇到了类似的情况并回答了它可以帮助某人的问题。

如果我正确理解了这个问题,当用户从设置中选择伦敦时,默认值将为1.当您读取locationSetting的设置包时,您获得值1而不是伦敦,但是您想要" LONDON& #34;在你的代码而不是1.你的plist的当前结构是不可能的。使默认值为字典而不是字符串,然后您可以在该字典中包含标题和值。然后,您可以检索所选值的文本。

答案 2 :(得分:2)

位置设置为多值,是NSDictionary。因此,请执行以下操作:

NSDictionary *location = [[NSUserDefaults standardUserDefaults] valueForKey:@"locationSettings"]; 

NSString *value = (NSString *)location; 

将位置值转换为NSString,因为您知道要返回一个字符串。

然后,您可以将结果作为字符串处理。 "值"返回的变量是值部分中写入的内容。在您的情况下,如果您选择"伦敦",您将获得" 1"以字符串的形式返回。

答案 3 :(得分:0)

如果我对您的问题的理解是正确的,那么您就会问如何获取用户所选值的位置字典的Key条目。

对于词典,没有这样的一次性使用方法。 但是有一种方法可以通过操纵allKeys来实现相同的结果,如下所示:

NSDictionary *location = [[NSUserDefaults standardUserDefaults] valueForKey:@"locationSettings"]; 
NSArray *keys = [location allKeys];
NSString *locationIdentifier = [keys objectForIndex:[location valueForKey:@"LONDON"]];

这会导致"LONDON"字符串存储在locationIdentifier变量中。 所以最后一行,字符串的赋值,可能会改为简单地改为objectForIndex:0,但这不是我以前尝试过的,所以我不确定。