如何获得NSDictionary中的第一个元素?

She*_*lam 36 iphone cocoa cocoa-touch objective-c nsdictionary

我有一系列NSDictionaries.如何拉出字典中的第一个元素?

   NSArray *messages = [[results objectForKey:@"messages"] valueForKey:@"message"];         
    for (NSDictionary *message in messages)
    {
        STObject *mySTObject = [[STObject alloc] init];
        mySTObject.stID = [message valueForKey:@"id"];      
        stID = mySTObject.stID;
    }
Run Code Online (Sandbox Code Playgroud)

Wev*_*vah 60

NSDictionary中没有"first"元素; 其成员没有保证订单.如果你只想要一个字典中的一个对象,但不关心它与哪个关联,你可以这样做:

id val = nil;
NSArray *values = [yourDict allValues];

if ([values count] != 0)
    val = [values objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

  • 请注意```allValues```方法返回一个无序数组.根据文档"未定义数组中值的顺序.".所以你可能得不到你期望获得的对象. (3认同)

Mar*_*ote 25

NSDictionaries是无序的,这意味着没有第一个或最后一个元素.事实上,即使在特定字典的生命周期中,密钥的顺序也永远不会保证是相同的.

如果你想要任何对象,你可以获得其中一个键:

id key = [[message allKeys] objectAtIndex:0]; // Assumes 'message' is not empty
id object = [message objectForKey:key];
Run Code Online (Sandbox Code Playgroud)


ASL*_*LOP 5

NSArray有一个名为的选择器firstObject,它简化了代码并使其更具可读性:

id val = [[yourDict allValues] firstObject];
Run Code Online (Sandbox Code Playgroud)

如果yourDict是空的val将是nil,所以没有必要检查字典/数组大小.