2013-02-12 59 views
1

http://xtremeinspection.com/new2you4kids/app/android/get_category_brand.phpJSON抓取iOS應用程序

以上是JSON的URL。

我想說明的Xcode中,其 「PARENT_CATEGORY_ID」= 「0」 數據。

我用下面的代碼:

-(void) loadJSON 
{ 
loadJSONData = [NSURL URLWithString:mainURL]; 

    NSLog(@"Fetch JSON URL : %@",loadJSONData); 

    dispatch_async(kBgQueue, ^{ 
     NSData* data = [NSData dataWithContentsOfURL: 
         loadJSONData]; 
     [self performSelectorOnMainThread:@selector(fetchedData:) 
           withObject:data waitUntilDone:YES]; 
    }); 
} 

- (void)fetchedData:(NSData *)responseData 
{ 
    NSError* error; 
    json = [NSJSONSerialization 
      JSONObjectWithData:responseData 
      options:kNilOptions 
      error:&error]; 
    adultJSON = [json objectForKey:@"category"]; 
    NSLog(@"Data: %@", adultJSON); 

    NSDictionary *typeData = [json objectForKey:@"category"]; 
    categTypeArray = [[NSMutableArray alloc] initWithCapacity:0]; 
    for (NSDictionary *types in typeData) 
    { 
     if([[NSString stringWithFormat:@"%@",[adultJSON valueForKey:@"PARENT_CATEGORY_ID"]] isEqualToString:@"0"]) 
     { 
      [categTypeArray addObject:[types valueForKey:@"PARENT_CATEGORY_ID"]]; 
     } 
    } 
    NSLog(@"Data: %@", adultJSON); 
    NSLog(@"Category Data: %@", categTypeArray); 
} 

但categTypeArray返回null。

我應該使用哪種方法?

回答

2

的錯誤是用下面的代碼:

if([[NSString stringWithFormat:@"%@",[adultJSON valueForKey:@"PARENT_CATEGORY_ID"]] isEqualToString:@"0"]) 

你寫adultJSON而不是types

更改該代碼:

if([[NSString stringWithFormat:@"%@",[types valueForKey:@"PARENT_CATEGORY_ID"]] isEqualToString:@"0"]) 
+0

你應該提及的是,調用'stringWithFormat:'是非常多餘。 – 2013-02-12 14:34:13

+0

@Midhun MP你的建議將拋出一個異常和崩潰的應用程序,如果'[類型valueForKey:@「PARENT_CATEGORY_ID」]代碼'不會返回一個NSString對象。舉例來說,如果它返回一個NSDictionary,你會崩潰,因爲NSDictionary中並沒有選擇isEqualToString迴應。 – 2013-02-12 15:13:02

+0

@MidhunMP類型轉換在這種情況下不起作用。 – 2013-02-12 15:33:56