-1

私はこの単純なコードを持っていますが、何が起こっているのか本当にわかりません:

NSLog(@"Data: %@",[dataFromServer description]);
    for (int i=0; i<[data count]; i++) {
        NSLog(@"Processing data :%d",i);
        NSDictionary *current=[data objectAtIndex:i];
        int category = [[current objectForKey:@"type"] intValue];
        NSLog(@"Category value:%d",category);
        if (category == 1) {
            NSLog(@"Hotel found %@",[current description]);
            [hotelsFromServer addObject:current];
    }
NSLog(@"Hotels. Total:%d Items:%@",[hotelsFromServer count],[hotelsFromServer description]);

サーバー (dataFromServer) から正しく印刷された NSMutableArray を取得しています。各オブジェクトは NSDictionary です。カテゴリ 1 は、タイプがホテルであることを意味します。if 句を入力すると、hotel が正しく出力されます。

しかし、最終的な NSLog の for の外では、次のようになります。

Hotels. Total:0 Items:(null)

何故ですか?現在のアイテムは正しいです。NSMutableArray に追加されない理由。

配列は次のように定義されます。

@implementation ClassName
{
   NSMutableArray * dataFromServer;
   NSMutableArray * hotelsFromServer;
}
4

1 に答える 1

0

NSMutableArray を必ず初期化してください

self.hotelsFromServer = [[NSMutableArray alloc] init];

あなたの原因では、配列はnilだと思います.[nil anyMessage]は何もしません

于 2013-10-21T21:16:06.123 に答える