2013-04-24 26 views
0

我从Web服务日期是这样的:UIPickerView数据弗朗的NSDictionary

{ 
      "idlife_stage_question" = 43;//..basically this should be key 
      "life_stage_idlife_stage" = 1; 
      "profile_idprofile" = 0; 
      "question_text" = "example";//..this should be object 
      sequence = 42; 
    } 

现在我需要“idlife_stage_question”和“QUESTION_TEXT”从JSON的每个字典和一个UIPickerView加载“QUESTION_TEXT”再展在UILabel中选择行文本。此外,我需要为相应的“question_text”获取“idlife_stage_question”,以便稍后将“idlife_stage_question”发送到服务器。我怎样才能做到这一点与NSDictionary?

编辑:

我REQ是:

  1. 获取 “idlife_stage_question”,并从JSON “QUESTION_TEXT”。
  2. 集“idlife_stage_question”和“QUESTION_TEXT”中的NSMutableDictionary
  3. 填充UIPicker与“QUESTION_TEXT”的标签
  4. 显示所选行的文本
  5. 获取“idlife_stage_question”弗朗的NSMutableDictionary相当于“QUESTION_TEXT”送它到服务器。
+0

考虑打破部分你的问题,将是对你有所帮助,以及对他人 – Firdous 2013-04-24 07:34:52

+0

hi..pls看到编辑 – user2268539 2013-04-24 07:40:46

+0

做ü意味着你有这样的一个你已JSON的多块给?他们是阵列吗? – Firdous 2013-04-24 07:44:33

回答

0

解析JSON到NSDictionary中

-(void) requestFinished : (ASIHTTPRequest *) request { 
     NSArray *myArray = [NSJSONSerialization 
               JSONObjectWithData:[request responseData] 
               options:kNilOptions 
               error:&error]; 
     } 

要检查阵列层级:

NSLog(@"%@", myArray); 

现在你的阵列中的每个元素可以提取到的NSDictionary。当你迭代你的数组时,你得到的每个对象都是一个NSDictionary。

要遍历您的阵列

NSEnumerator *myIterator = [myArray objectEnumerator]; 
    id anObject; 

    while(anObject = [myIterator nextObject]){ 
     NSLog(@"%@", [anObject [email protected]"question_text"]); 
     // get each value of your question_text in a new NSArray and use that array for UIPickerView demostrated in the following link 
    } 

然后看看here如何创建UIPickerView编程

1

假设你有self.questionsArray具有不同于webservice的所有数据并没有在UIPickerView

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 1; 
} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return [self.questionsArray count]; 
} 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return self.questionsArray[row][@"question_text"]; 
} 
只有一个组件

解除picker的方法查看

- (void)dismissPickerView 
{ 
    //Get the selected Row in picker 
    NSInteger selectedQuestionIndex = [self.pickerView selectedRowInComponent:0]; 
    NSDictionary *question = self.questionsArray[selectedQuestionIndex]; 

    self.label.text = question[@"question_text"]; 

    //Use this value to send back to server 
    NSInteger questionId = [question[@"idlife_stage_question"] integerValue]; 

}