2012-04-02 81 views
1

我需要幫助來檢索一個JSON對象和解析數組到我的UIPickerView與2列。一列是從JSON中檢索的數據,另一列是硬編碼的。 是否有解析JSON到UIPickerView列的示例代碼?UIPickerView與JSON

回答

2

我給你一些代碼讓你開始,但請記住: 它沒有優化的代碼(例如你在主線程中執行的取數據的調用,如果你需要獲取大量的數據,你必須進行異步調用)。它對於理解如何實現UIPickerView delegate &​​至關重要。 我希望這會讓你走上正軌...

// Get your JSON Data 
NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.mydomain.com/myjson.json"]]; 

// Convert your JSON object to an 'NS' object 
NSError *error; 
id myJsonObj = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error]; 

// Extract any data from your JSON object 

NSArray *myFirstArray = ...; // Your fixed array 
NSArray *mySecondArray = ...; // An array with data from your JSON 


// In your UIPIckerView datasource 
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 2; 
} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    switch(component) 
    { 
     case 0: 
      // First component 
      return [myFirstArray count]; 
      break; 
     case 1: 
      // Second component 
      return [mySecondArray count]; 
      break; 
     default: 
      return 0; 
      break; 
    } 

    return 0; 
} 


// In your UIPIckerView delegate 
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    switch(component) 
    { 
     case 0: 
      // First component 
      return [myFirstArray objectAtIndex:row]; // We assume that you got NSString objects in the array 
      break; 
     case 1: 
      // Second component 
      return [mySecondArray objectAtIndex:row]; // We assume that you got NSString objects in the array 
      break; 
     default: 
      return 0; 
      break; 
    } 

    return @""; 
}