【问题标题】:Xcode Obj-C: Make new NSArray from one key each out of an Array of DictionariesXcode Obj-C:从一个字典数组中的一个键创建新的 NSArray
【发布时间】:2011-02-11 07:34:12
【问题描述】:

这实际上可能是一个多部分的问题。但这是第一部分...

我有一个字典数组(实际上是在一个 plist 中)。每个字典都有 3 个键:(title)、(points) 和 (description)。

我正在尝试使用第一个数组中每个字典的键“title”的值创建一个新数组。

让我解释一下我为什么这样做,也许这会提供更好的全面解释。

我试图让人们从预先确定的列表中进行选择。哎呀,如果这是一个网页,那将非常简单,因为我真正关心的是“点”和“标题”。在一个网站上,我可以简单地做一个下拉组合框,其中“点”是值,标题是每一行的文本。

但这不是网页。

所以我在这里要做的是在他们单击文本字段时弹出一个模式选择器。模态选择器显示我们新数组中按字母顺序排列的“标题”。无论他们选择哪一个,它都会关闭模态视图并将“标题”文本分配给用户无法编辑的UITextField

我有一些代码可以让我的模态选择器弹出。但我需要向它提供一个数组,其中包含我真实数组中每个字典的“标题”。

【问题讨论】:

    标签: iphone objective-c arrays xcode dictionary


    【解决方案1】:
    [array valueForKeyPath:@"title"]
    

    这应该返回一个新数组,其结果是对数组中的每个对象调用 [obj valueForKey:@"title"]。

    在这种情况下,您应该可以使用

    [array valueForKey:@"title"]
    

    也一样,但是如果您想进一步了解字典(例如“person.name”或其他内容),键路径版本非常好。

    【讨论】:

    • 这会遍历我数组中的每一个字典吗?喜欢做 a ... newArray = [mainArray valueForKey:@"title"] 我来自 11 年(许多个月前)的程序背景(VB、DOS 等)。所以这让我有些习惯了。我的第一个直觉是做某种 for 语句来循环遍历我的“mainArray”中的所有字典,然后将标题一个一个地添加到新数组中。原谅我的无知。只是对您发布的方法在整个数组中循环感到困惑。伙计,我希望 iPhone 有 safari 风格的下拉组合框 LOL
    • 是的,它将遍历数组中的每个对象并获取“title”属性。请参阅 NSArray 上的“valueForKey:”文档。当然,您可以一个接一个地循环并构造一个带有标题的新数组;这并不难。但是“valueForKey:”已经在为你做这件事了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多