2013-03-26 45 views
-1

下面的代碼讓我發瘋了:NSArray的到來爲空,而對象具有值

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

所以,如果我取消的第一線環,它打印的所有城市。如果我打印NSArray,它顯示爲空。這兩個文件都以同樣的方式定義,即eventsTitles和eventsCity。什麼可能是錯的?

感謝您的幫助

+0

你從未創建過eventsCity。 – 2013-03-26 20:45:05

+0

可能你沒有初始化它? – 2013-03-26 20:45:11

回答

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

它們在頭文件中定義。 eventTitles工作正常。只有城市不是 – 2013-03-26 20:45:37

+0

@sys_debug - 「定義」不是「創建」的。 – 2013-03-26 20:46:08

+0

林不問他們是否被定義,我問他們是否被分配和初始化。 – 2013-03-26 20:46:13

0

你初始化self.eventsCityself.eventsTitles爲空NSMutableArray S'簡單地將它們聲明爲@properties將它們保留爲「零」。

你也應該引用它們,而不是實例變量,而是self.arrayName。你可以做延遲實例這樣的,所以你就沒有這個問題=)

編輯:添加延遲實例代碼,讓你擁有了我的意思的例子:

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

利用這一點,將爲你創建一個空陣列,如果你還沒有做任何參考,你還沒有做過一個self.eventsCity

相關問題