2014-11-11 2 views
0

Я новичок в ios. Я делаю первое приложение, в котором я вызываю данные с сервера и показываю в ячейке таблицы, но он дает исключение, которое упоминается. данные поступают правильно, но когда я заполняю свое исключение ячейки таблицы, отображается. выше, пожалуйста, мой кодЗавершение приложения из-за неперехваченного исключения 'NSInvalidArgumentException 4

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
     static NSString *tableviewidentifier = @"cell"; 
     UITableViewCell *cell= [tableView dequeueReusableCellWithIdentifier:tableviewidentifier]; 
     if(cell==nil){ 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:tableviewidentifier]; 
     } 
     NSMutableArray *jsonresultarr=[NSMutableArray new]; 

     NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://magmasysdev.com/ddc/getAllCompanies.php"]]; // this is your request url 

     [request setHTTPMethod:@"GET"]; 

     [request setValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"content-type"]; 

     NSError *err; 
     NSURLResponse *response; 
     NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 

     NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingMutableContainers error: &err];  // here parsing the array 

     NSArray *firstArry=[[jsonArray objectAtIndex:1]objectForKey:@"company_data"]; 

     for (int i=0; i<[firstArry count]; i++) 
     { 
      NSMutableDictionary *getjsonresponse= [firstArry objectAtIndex:i]; 

      NSString *Company_Id=[getjsonresponse objectForKey:@"Company_Id"]; 
      NSString *Company_Name=[getjsonresponse objectForKey:@"Company_Name"]; 
      NSString *Company_Address=[getjsonresponse objectForKey:@"Company_Address"]; 
      NSString *Company_Email=[getjsonresponse objectForKey:@"Company_Email"]; 
      NSString *Company_Tel_Num=[getjsonresponse objectForKey:@"Company_Tel_Num"]; 
      NSString *Company_Website=[getjsonresponse objectForKey:@"Company_Website"]; 
      NSString *Company_Fax_Num=[getjsonresponse objectForKey:@"Company_Fax_Num"]; 
      [jsonresultarr addObject:Company_Id]; 
      [jsonresultarr addObject:Company_Name]; 
      [jsonresultarr addObject:Company_Address]; 
      [jsonresultarr addObject:Company_Email]; 
      [jsonresultarr addObject:Company_Tel_Num]; 
      [jsonresultarr addObject:Company_Website]; 
      [jsonresultarr addObject:Company_Fax_Num]; 
      cell.textLabel.text=[[jsonresultarr objectAtIndex:indexPath.row]objectForKey:@"Company_Id"]; // getting exception in this line.. 

     } 




      return cell; 
    } 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    // Return the number of rows in the section. 
    NSMutableArray *jsonresultarr=[NSMutableArray new]; 

    NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://magmasysdev.com/ddc/getAllCompanies.php"]]; // this is your request url 

    [request setHTTPMethod:@"GET"]; 

    [request setValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"content-type"]; 

    NSError *err; 
    NSURLResponse *response; 
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 

    NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingMutableContainers error: &err];  // here parsing the array 

    NSArray *firstArry=[[jsonArray objectAtIndex:1]objectForKey:@"company_data"]; 

    for (int i=0; i<[firstArry count]; i++) 
    { 
     NSMutableDictionary *getjsonresponse= [firstArry objectAtIndex:i]; 

     NSString *Company_Id=[getjsonresponse objectForKey:@"Company_Id"]; 
     NSString *Company_Name=[getjsonresponse objectForKey:@"Company_Name"]; 
     NSString *Company_Address=[getjsonresponse objectForKey:@"Company_Address"]; 
     NSString *Company_Email=[getjsonresponse objectForKey:@"Company_Email"]; 
     NSString *Company_Tel_Num=[getjsonresponse objectForKey:@"Company_Tel_Num"]; 
     NSString *Company_Website=[getjsonresponse objectForKey:@"Company_Website"]; 
     NSString *Company_Fax_Num=[getjsonresponse objectForKey:@"Company_Fax_Num"]; 
     [jsonresultarr addObject:Company_Id]; 
     [jsonresultarr addObject:Company_Name]; 
     [jsonresultarr addObject:Company_Address]; 
     [jsonresultarr addObject:Company_Email]; 
     [jsonresultarr addObject:Company_Tel_Num]; 
     [jsonresultarr addObject:Company_Website]; 
     [jsonresultarr addObject:Company_Fax_Num]; 



} 
    return jsonresultarr.count; 
} 

ответ

1

Подход, который вы следовали, не является хорошим способом. Для каждой ячейки он вызывает веб-службы, чтобы он влиял на производительность.

cell.textLabel.text=[[jsonresultarr objectAtIndex:indexPath.row]objectForKey:@"Company_Id"]; 

Здесь jsonresultarr имеет HOLS в объект NSString не NSDictionary, так изменится, как показано ниже

cell.textLabel.text=[jsonresultarr objectAtIndex:indexPath.row]; 
+0

теперь эта ошибка придет 'NSRangeException', причина: «*** - [__ NSArrayM objectAtIndex: ]: индекс 7 за пределами границ [0 .. 6] –

+0

Plz дает источник данных для делегатов должным образом. Лучше, пожалуйста, ознакомьтесь с основами UITableView. –

+0

huf, pls Не делайте этого, сделайте его как отдельную функцию для web-сервисов и используйте переменную экземпляра, чтобы сохранить результирующее значение –

Смежные вопросы

 Смежные вопросы