2012-05-10 60 views
0

我有一個建築物,其中有一個類成員NSMutableArray * subnode.I已經聲明瞭一個更多的數組buildingArray,它存儲了Building.I類型的元素。我試圖打印Building class對象,如下面的代碼所示但只進入循環。 子節點數組循環的第二個未執行。這是打印具有數組作爲其類成員之一的對象的正確方法。 代碼:在陣列內部打印數組

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

回答

0

如果這是出於調試目的,我建議嘗試以下操作:從NSObject繼承的每個對象都繼承其description方法。通過簡單地調用下面的代碼

@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); 

一下添加到Building.m

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"); 
    } 
} 

希望,這會幫助你;

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"); 
} 
} 

這應該起作用。快樂編碼:)

0

你的代碼似乎沒問題。只需檢查數組(子節點)是否已分配並初始化。還要檢查它是否有一些值。我使用了類似的代碼,它適用於我。