0

1つのクラスメンバーNSMutableArray*subnodeを持つクラスBuildingがあります。タイプBuildingの要素を格納するもう1つの配列buildingArrayを宣言しました。次のコードに示すように、Buildingクラスオブジェクトを出力しようとしました。ループ。サブノード配​​列の2番目のforループが実行されていません。これは、配列をクラスメンバーの1つとして持つオブジェクトを印刷する適切な方法ですか。コード:

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

4 に答える 4

0

あなたのコードは大丈夫のようです。アレイ(サブノード)が割り当てられ、初期化されているかどうかを確認するだけです。また、値が含まれているかどうかも確認してください。私は同様のコードを使用しましたが、それは私のために機能します。

于 2012-05-10T06:59:27.383 に答える
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);
于 2012-05-10T08:34:54.237 に答える
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");
    }
}

うまくいけば、これはあなたを助けるでしょう。

于 2012-05-10T05:26:05.463 に答える
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");
}
}

これはうまくいくはずです。ハッピーコーディング:)

于 2012-05-10T05:45:14.940 に答える