【问题标题】:NSDictionary - how return the Key as a stringNSDictionary - 如何将密钥作为字符串返回
【发布时间】:2015-12-23 20:29:27
【问题描述】:

我有一个这样的列表:

<dict>
<key>New item</key>
<dict>
    <key>document</key>
    <string>driving licence</string>
    <key>Overview</key>
    <string>a driving licence is required.......</string>
</dict>

如果我想得到对象,我会写这样的:

 myString = [somedictionary objectForKey:@"Overview"];

如果我想从我的 plist 中获得“概述”呢? 我希望它很清楚......请不要投反对票......我还在学习!;-)

编辑版本:

最好更具体:

我有这个代码

 for (NSDictionary *playDictionary in playDictionariesArray) {
        Play *play = [[Play alloc] init];
        play.name = [playDictionary objectForKey:@"playName"];

这是 Apple 示例代码: http://developer.apple.com/library/ios/#samplecode/TableViewUpdates/Introduction/Intro.html

在这个示例中,字符串 play 在标题部分返回播放的名称,但我想要 修改它并在标题中获取“密钥”(在本例中为“PlayName”)。

感谢大家:我就是这样解决的:

 NSMutableArray *anArray = [[NSMutableArray alloc] init];
    [anArray addObject:@"Overview"];
    [anArray addObject:@"pre-requirements"];
    [anArray addObject:@"where"];
    [anArray addObject:@"what"];


    //Use a for each loop to iterate through the array
    for (NSString *s in anArray) {

            Play *play = [[Play alloc] init];
            play.name = s;

【问题讨论】:

  • 我的意思是键本身不是那个键的值....

标签: iphone objective-c ios nsdictionary


【解决方案1】:

您可以使用[dict allKeys] 获取字典中所有键的数组。您可以使用[dict allKeysForObject:object] 获取值为特定对象的所有键的数组。您可以像这样在循环中一个接一个地处理键:

for (NSString *key in dict) {
    ...
}

【讨论】:

  • 所以...我猜是[[dict allKeys] objectAtIndex:0]。您是否了解字典可以有许多键,并且键没有定义的顺序?在 Apple 的示例中,该字典有两个键,“playName”和“quotations”。你怎么知道你想要哪一个?
  • 我想我越来越近了。我想要做的是为我的项目使用那个可扩展的单元格。该表将显示一些详细信息,并且在我的情况下,标题(在苹果项目“playName”中)应该类似于:“overview”、“where”、“What”、“how”,而不是 3 个播放的名称。我想我不必使用字典来做到这一点,但我试图在没有重大变化的情况下使用代码。
  • ....可能包含 4 个对象的数组也可以。类似 NSArray *anArray = [NSArray alloc]initWithObjects:@"overview",@"where",@"what",@"how", nil];但后来我无法根据需要设置 play.name...
【解决方案2】:

试试这个,如果它有效,请告诉我..

NSMutableArray* result = [NSMutableArray array];
for (NSString* key in dictionary) {

    [result addObject:key];
    // write to a dictionary instead of an array
    // if you want to keep the keys too.

}
return result;

【讨论】:

  • 或者只是[dictionary allKeys]
  • @rob 经验是万物之师。 -“朱利叶斯·凯瑟”
  • 如果我使用 [dictionary allKeys] 我得到以下错误:不兼容的指针类型将“NSArray”传递给“NSString”类型的参数
  • 你现在还没有使用它.. 试试 rob 的方法,它要简单得多。
【解决方案3】:

如果您想要获取给定对象的密钥,您可以尝试以下方法:

- (NSArray *)allKeysForObject:(id)anObject

像这样使用它:

myString = [[myDict allKeysForObject:@"a driving licence is required......."] objectAtIndex:0];

请注意,它返回一个 NSArray,因为指定对象可以有多个键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2012-03-27
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多