iPhone:获得多维数组的价值

时间:2010-12-24 20:44:22

标签: iphone objective-c arrays

我有一个深层次的数组,我想知道在我的数组中深入获取其中一个子元素值的最佳方法是什么。

我假设我需要使用递归方法,但最好的方法是什么?或者有更快的方法吗?

该数组来自我正在使用的XML Parser,它将所有内容构建为这样的数组(使用NSLog显示结构):

{
        children =         (
                        {
                children =                 (
                                        {
                        children =                         (
                                                        {
                                children =                                 (
                                );
                                data = 12;
                                element = AssetID;
                            }
                        );
                        data = "";
                        element = "ns1:GetUserIdByUsernameResponse";
                    }
                );
                data = "";
                element = "SOAP-ENV:Body";
            }
        );
        data = "";
        element = "SOAP-ENV:Envelope";
    }

我想得到的是AssetID数据,在这种情况下是12。

1 个答案:

答案 0 :(得分:1)

看起来解析器正在为每个元素返回一个NSDictionary,其中包含一个子元素NSArray的“children”键。

如果响应始终采用此格式且AssetID元素始终位于此位置,则可以直接访问它而不使用递归或循环。

使用类似的东西:

//"parserResultObject is the object the parser returns to you
NSDictionary *bodyDict = [[parserResultObject objectForKey:@"children"] objectAtIndex:0];
NSDictionary *responseDict = [[bodyDict objectForKey:@"children"] objectAtIndex:0];
NSDictionary *assetIdDict = [[responseDict objectForKey:@"children"] objectAtIndex:0];

//assuming AssetID's data is stored as an NSNumber...   
int assetIdData = [[assetIdDict objectForKey:@"data"] intValue];