iPhone: как получить значение из NSMutable Array с ключами - PullRequest
0 голосов
/ 03 января 2012

Я хотел бы знать, как получить значение из NSMutableArray с ключами.Массив построен следующим образом:

    qtype = [[NSMutableArray alloc] init];
    while (dicjson = (NSDictionary*)[enumerator nextObject]) {
     question_id = [dicjson objectForKey:@"question_id"];        
     question_text = [dicjson objectForKey:@"question_text"];
     question_type = [dicjson objectForKey:@"question_type"];

     [qtype addObject:[NSDictionary dictionaryWithObject:question_type forKey:question_id]];

} 

Я заполняю массив в ячейке таблицы:

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *type = [qtype objectAtIndex:[indexPath row]];

}

однако вывод похож на "65 = YN", что не то, что яхочу.Я хотел бы извлечь только "65".Если бы вы могли дать мне некоторую идею, был бы очень признателен.

Ответы [ 4 ]

1 голос
/ 03 января 2012

Кажется, словарь для типа вопроса содержит только один ключ, так что вы можете достичь желаемого, но помните: словари - это неупорядоченные коллекции, работающие с ключами, тогда как массивы упорядочены * 1004. * коллекции, работающие с индексами.

В любом случае, в tableView:cellForRowAtIndexPath: измените код, чтобы получить единственный ключ (который является идентификатором вопроса) в словаре:

-(UITableViewCell *)tableView:(UITableView *)tableView
        cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSArray *dictKeys = [[qtype objectAtIndex:[indexPath row]] allKeys];
    NSString *type = [dictKeys objectAtIndex:0];
}
1 голос
/ 03 января 2012

На самом деле, я действительно не понимаю, почему вы используете массив словарей.
Вы можете просто создать массив текстов вопросов:

qtype = [[NSMutableArray alloc] init];
while (dicjson = (NSDictionary*)[enumerator nextObject]) {
 question_id = [dicjson objectForKey:@"question_id"];        
 question_text = [dicjson objectForKey:@"question_text"];
 question_type = [dicjson objectForKey:@"question_type"];

 [qtype addObject:question_id];

 } 

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *type = [qtype objectAtIndex:[indexPath row]];

}

Но если вам нужен qtype для других целейВы можете получить

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSDictionary *dict = [qtype objectAtIndex:[indexPath row]];
    NSString *type = [[dict allKeys] objectAtIndex:0]; 

}
0 голосов
/ 03 января 2012

вы можете получить доступ к каждому объекту массива типа NSDictionary. Ниже приведен код для этого

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSDictionary *dict = [qtype objectAtIndex:[indexPath row]];
    NSString *question_id = [dict objectForKey:@"question_id"];     
    NSString *question_text = [dict objectForKey:@"question_text"];
    NSString *question_type = [dict objectForKey:@"question_type"];
}
0 голосов
/ 03 января 2012

Это потому, что вы храните NSDictionary в "qtype".Попробуйте:

NSDictionary *dict = [qtype objectAtIndex:[indexPath row]];
NSString *type = [[dict allValues] lastObject];//since you have only one object stored.
...