在数组内打印数组

时间:2012-05-10 05:22:16

标签: iphone ios nsmutablearray

我有类构建,其中我有一个类成员NSMutableArray * subnode.I已经声明了另一个数组buildingArray,它存储了Building.I类型的元素。我试图打印Building类对象,如下面的代码所示。但是进入只有第一次循环。 第二个子节点数组的循环没有执行。这是打印具有数组作为其类成员之一的对象的正确方法。 代码:

    for(Building *b in buildingArray)
{
    NSLog(@"inside building array");
    for(NSString *str in b.subnode)
    {
        NSLog(@"inside subnode array");
    }
}

4 个答案:

答案 0 :(得分:0)

更改以下代码。我不知道你买什么意思Building。所以我只使用id代替Building来避免任何类型的混淆。

for(id b  in buildingArray)
{
    NSLog(@"inside building array");
    NSArray *temp = b;

    for(NSString *str in temp)
    {
        NSLog(@"inside subnode array");
    }
}

希望,这会对你有帮助;

答案 1 :(得分:0)

for(Building *b in buildingArray)
{
NSLog(@"inside building array");
NSMutableArray *temp = [NSMutableArray arrayWithArray:b.subnode]
for(id *str in temp)
{
    NSLog(@"inside subnode array");
}
}

这应该有效。快乐的编码:)

答案 2 :(得分:0)

您的代码似乎没问题。只需检查是否已分配和初始化数组(子节点)。还要检查它是否有一些值。我使用了类似的代码,它适用于我。

答案 3 :(得分:0)

如果这是出于调试目的,我建议您尝试以下操作:从NSObject继承的每个对象都会继承其description方法。

将此添加到Building.m

@implementation Building

- (NSString *)description {
    NSMutableString *description = [NSMutableString stringWithString:[super description]];
    // add the following lines for any relevant properties
    // [description appendFormat:@", materials == %@", materials];
    // then have the subnode print itself:
    [description appendFormat:@", subnode == %@", subnode];
    return description;
}

@end

然后,您只需调用以下代码即可打印整个buildingArray

NSLog(@"buildingArray == %@", buildingArray);