2012-05-10 20 views
0

私は1つのクラスメンバNSMutableArray *サブノードを持つクラスBuildingを持っています。次のコードに示すように、Building.Iの要素を格納するもう1つの配列buildingArrayを宣言しました。しかし、最初のforループだけに入ります。 サブノード配​​列の2番目のforループが実行されていません。配列を持つオブジェクトをそのクラスメンバの1つとして印刷するのが適切な方法です。 コード:コードを以下配列内の配列を印刷

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

答えて

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

変更。私はBuildingを買うという意味は分かりません。だから、ちょうどBuildingの代わりにidを使用して、混乱を避けてください。

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

あなたのコードはOKであるようです。配列(サブノード)が割り当てられ、初期化されているかどうかをチェックするだけです。また、いくつかの値が入っているかどうかを確認してください。私は同様のコードを使用して、それは私のために働く。