【问题标题】:NSArray Retrieving Single ItemNSArray 检索单个项目
【发布时间】:2014-08-31 20:06:02
【问题描述】:

今天早上我似乎在努力解决这个问题。我有一个充满数据的 NSArray。到目前为止很简单。最终,我需要从数组中检索一个或多个项目以简单地显示在设备上。下面

NSArray *myViews = viewsArray;   
NSString *activeView = [myViews valueForKey:@"Active"];

我知道数组是正确的,但由于某种我自己不知道的原因,我可以从数组中取出其中一项并设置它,以便我可以在其他地方使用它。也许是范围问题。

我的数组是这样的;

 [0]
    NSObject
    appViewName = (NSString *) @"AcmeAPP"
    appActive = (NSString *) @"True"

我也尝试过遍历数组,但这似乎也不起作用。显然我错过了一些东西。

【问题讨论】:

标签: ios nsarray nsobject


【解决方案1】:

如果你想使用键值对(获取用特定字符串标记的对象,请查看 NSDictionary,或者它是可变子类 - NSMutableDictinary

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/Reference/Reference.html

NSDictionary *newDictionary = @{@"Active" : self.someView};
NSString *activeView = myView[@"Active"];

【讨论】:

    【解决方案2】:

    这里的问题是你试图获得一个“valueForKey”,这意味着你错误地声明了你的“数组”,它实际上需要是一个“NSDictionary”对象。

    NSArray 没有键。 NSDictionary 可以。

    【讨论】:

    • 您可以将 valueForKey 与数组一起使用。 iosdevtips.co/post/80598241763/valueforkey-nsarray
    • 谢谢迈克尔,我已经有一段时间没有接触目标c了。清楚地。我在使用上述内容的 UITable 视图中实现了上述结果。但是您的建议是使用 NSDictionary 而不是 NSArray?
    • @Matz 非常有趣,但行为怪异。
    【解决方案3】:

    NSArrays 没有键,只有值,存储在数字索引中。您可以通过调用 objectAtIndex 并提供一个介于 0 和 count - 1 之间的数字来检索项目。也许使用 NSDictionary 会更好?

    【讨论】:

      【解决方案4】:

      您的数组令人难以置信的混乱,但您正在寻找一个“活动”键,但没有。尝试“appActive”:但我真的不知道你想要达到什么目的..

      如果你是,如果我错了,请纠正我,一个完全的编程新手,也许你不应该使用 KVC 并学习如何使用 NSArrays 和 NSDictionaries。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-01
        • 2011-08-02
        • 1970-01-01
        • 1970-01-01
        • 2019-06-16
        • 2011-04-16
        • 1970-01-01
        相关资源
        最近更新 更多