-1

次のコードは私を夢中にさせています:

-(void)fetchEventDetails
{    
    NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://domain.com/ios/read.php"]];
    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];


    for(id object in dict){
    //NSLog(@"city : %@",object[@"city"]);
//        NSLog(@"title : %@",object[@"title"]);
//        NSLog(@"description : %@",object[@"description"]);
        [_eventsTitles addObject:object[@"title"]];
        [_eventsCity addObject:object[@"city"]];
    }


    NSLog(@"Array : %@", _eventsCity);
}

したがって、forループの最初の行のコメントを外すと、すべての都市が出力されます。NSArrayを印刷すると、nullが表示されます。どちらも.hファイルで同じ方法で定義されています。つまり、eventsTitlesとeventsCityです。何が間違っている可能性がありますか?

助けてくれてありがとう

4

2 に答える 2

0

あなたは他の場所で定義_eventsTitlesして_eventsCityいますか?

これを試して:

-(void)fetchEventDetails
{    
    NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://domain.com/ios/read.php"]];
    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];

    _eventsTitles = [[NSMutableArray alloc] init];
    _eventsCity = [[NSMutableArray alloc] init];
    for(id object in dict){
    //NSLog(@"city : %@",object[@"city"]);
//        NSLog(@"title : %@",object[@"title"]);
//        NSLog(@"description : %@",object[@"description"]);
        [_eventsTitles addObject:object[@"title"]];
        [_eventsCity addObject:object[@"city"]];
    }


    NSLog(@"Array : %@", _eventsCity);
}
于 2013-03-26T20:44:12.683 に答える
0

初期化self.eventsCityself.eventsTitlesて空にしましたNSMutableArrayか?単にそれらをとして宣言すると、@propertiesそれらは`nilのままになります。

また、おそらくインスタンス変数としてではなく、として参照する必要がありますself.arrayName。怠惰なインスタンス化もそのように行うことができるので、この問題は発生しません=)

編集:怠惰なインスタンス化コードを追加して、私が意味したことの例を示します:

- (NSMutableArray)eventsCity
{
    if (_eventsCity == nil)
       _eventsCity = [[NSMutableArray alloc] init];
    }
    return _eventsCity;
}

これを使用すると、参照するときにまだ作成していない場合は、空の配列が作成されますself.eventsCity

于 2013-03-26T20:45:29.730 に答える