2016-11-28 8 views
-2

Я новичок в iOS, и перед вами стоит проблема, связанная с получением IndexPath.row вне метода cellforrowAtIndexPath i.e on didFinishLoading. Мой код как этотКак получить IndexPath.row в didFinishLoading в Objective C

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{ 
    loginStatus = [[NSString alloc] initWithBytes: [myNSMDataFromServer mutableBytes] length:[myNSMDataFromServer length] encoding:NSUTF8StringEncoding]; 
    NSLog(@"loginStatus =%@",loginStatus); 
    NSError *parseError = nil; 
    NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:loginStatus error:&parseError]; 
    NSLog(@"JSON DICTIONARY = %@",xmlDictionary); 
    recordResult = [xmlDictionary[@"success"] integerValue]; 
    NSLog(@"Success: %ld",(long)recordResult); 
    NSDictionary* Address=[xmlDictionary objectForKey:@"soap:Envelope"]; 
    NSLog(@"Address Dict = %@",Address); 
    NSDictionary *new =[Address objectForKey:@"soap:Body"]; 
    NSLog(@"NEW DICT =%@",new); 
    NSDictionary *LoginResponse=[new objectForKey:@"TFMComplaints_GetNewResponse"]; 
    NSLog(@"Login Response DICT =%@",LoginResponse); 
    NSDictionary *LoginResult=[LoginResponse objectForKey:@"TFMComplaints_GetNewResult"]; 
    NSLog(@"Login Result =%@",LoginResult); 
    if(LoginResult.count>0) 
    { 
     NSLog(@"Login Result = %@",LoginResult); 
     NSLog(@"Login Result Dict =%@",LoginResult); 
     NSString *teststr =[[NSString alloc] init]; 
     teststr =[LoginResult objectForKey:@"text"]; 
     NSLog(@"Test String Value =%@",teststr); 
     NSString *string = [LoginResult valueForKey:@"text"]; 
     NSLog(@"Now String is =%@",string); 
     NSData *data =[string dataUsingEncoding:NSUTF8StringEncoding]; 
     NSError* error; 
     NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSUTF8StringEncoding error:&error]; 
     NSIndexPath *selectedIndexPath = [closetbl indexPathForSelectedRow]; 
     NSDictionary *firstObj = [array objectAtIndex:selectedIndexPath.row]; 

     idarray=[[NSMutableArray alloc]init]; 

     idarray=[firstObj valueForKey:@"Key"]; 
     NSLog(@"Result Array =%@",idarray); 
} 

Я получаю только одно значение, которое на 0.

Заранее спасибо!

+2

С какой целью u хотите это в didFinishLoading method? – ashmi123

+1

Пожалуйста, объясните подробнее ..... –

+0

NSDictionary * firstObj = [массив objectAtIndex: indexpath.row]; –

ответ

1

Просто добавьте цикл для массива:

for (int i = 0; i < array.count; i++) 
{ 
    //where i will be the index path. You can use it like this 
    NSDictionary *firstObj = [array objectAtIndex:i]; 

} 

В вашем случае вы можете использовать его как это:

idarray=[[NSMutableArray alloc]init]; 

for (int i = 0; i < array.count; i++){ 
    NSDictionary *firstObj = [array objectAtIndex:i]; 
    [idarray addObject:[firstObj valueForKey:@"Key"]]; 
    NSLog(@"Result Array =%@",idarray); 

    } 
+0

Пожалуйста, просмотрите обновленный вопрос сейчас. – Muju

+0

Вам нужен выбранный индекс? – User511

+0

Мне нужен весь Индекс. – Muju

1

NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];

Для получения более подробной информации следуйте: https://developer.apple.com/reference/uikit/uitableview/1615000-indexpathforselectedrow

Надеюсь, это поможет.

+0

Пожалуйста, просмотрите обновленный вопрос сейчас ... – Muju

+0

@Muju Найдите точку останова в 'NSIndexPath * selectedIndexPath = [closetbl indexPathForSelectedRow];' и проверьте значения для 'closetbl',' selectedIndexPath.section' и 'selectedIndexPath.row' – Mrunal

0

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

let indexPath = self.tblObj.indexPathForSelectedRow! 

let currentCell = self.tblObj.cellForRowAtIndexPath(indexPath)! as! YourTableViewCell