2012-03-06 3 views
0

Я получаю сообщение об ошибке при изменении источника данных моего TableView из NSArray с объектами (пример, которые я нашел) в NSMutableArray с фактическими значениями, которые мне нужно заполнить в моем представлении таблицы.установка UITableView из ошибки NSMutableArray

ошибка:

лат составляет: 33, долго: -74, 2012-03-06 12: 27: 58.380 х [606: fb03] - [__ NSCFNumber isEqualToString]: непризнанные селектор отправлен экземпляр 0x6b64280 2012-03-06 12: 27: 58.381 х [606: fb03] * Согласующего приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '- [__ NSCFNumber isEqualToString]: непризнанный селектор направлен например 0x6b64280'

оригинальный способ, который я устанавливал самостоятельно. Измерение и self.subinfo закомментировано.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:  NSIndexPath *)indexPath 
{ 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MeasurementCell"]; 

switch (indexPath.section) 
{ 
    case kMeasurement: 
     cell.textLabel.text=[self.measurements objectAtIndex:indexPath.row]; 
     cell.detailTextLabel.text=[self.subinfo objectAtIndex:indexPath.row]; 
     break; 
    default: 
     [email protected]"Unkown"; 
} 
return cell; 
} 

- (void)viewDidLoad 
{ 
appdelegate = [[AppDelegate alloc]init]; 

//get lat 
NSArray* fmArray = [appdelegate fetchEvents:@"Field_Measurement"]; 
NSMutableArray* latBindArray = [[NSMutableArray alloc]init]; 
NSMutableArray* longBindArray = [[NSMutableArray alloc]init]; 
for (Field_Measurement *fm in fmArray) 
{ 
    [latBindArray addObject:fm.latitude]; 
    NSLog(@"lat is: %@", fm.latitude); 
} 

for (Field_Measurement *fm in fmArray) 
{ 
    [longBindArray addObject:fm.longitude]; 
    NSLog(@"long is: %@", fm.longitude); 
} 

self.measurements = latBindArray;//[[NSArray alloc]initWithObjects:@"03/05/2012 @ 15:12", @"03/05/2012 @ 11:11", nil]; 
self.subinfo = latBindArray;//[[NSArray alloc]initWithObjects:@"Beta: 0.0234",@"Alpha: 3.977", nil]; 
[super viewDidLoad]; 
} 

это моя первая попытка представления таблицы (и новая для Objective-C все вместе), поэтому любые идеи о том, как заполнить вид таблицы из NSMutableArray было бы полезно. У меня есть база данных sqlite, из которой я извлекаю эти записи, если это поможет.

благодаря

ответ

1

Похоже, вы пытаетесь установить cell.textLabel.text к NSNumber вместо NSString. self.measurements заселен объектами NSNumber, поэтому сначала нужно преобразовать в строку.

cell.textLabel.text=[NSString stringWithFormat:@"%@", [self.measurements objectAtIndex:indexPath.row]]; 
cell.detailTextLabel.text=[NSString stringWithFormat:@"%@", [self.subinfo objectAtIndex:indexPath.row]]; 
+0

Вот это, я понял, что это была проблема литья, но по какой-то причине .text не щелкать , Благодарю Аарона – BamBamBeano

2

первым делом, чтобы не использовать делегат приложения для получения данных:

изменения этих линий

cell.textLabel.text=[self.measurements objectAtIndex:indexPath.row]; 
cell.detailTextLabel.text=[self.subinfo objectAtIndex:indexPath.row]; 

к этим

Try. Либо получите это, используя методы внутри вашего VC или еще лучше, создайте собственный класс (свою модель), чтобы получить нужные вам данные, и передайте их обратно на ViewController (ваш контроллер).

Насколько наполнение TableView из массива (это предполагает, что ваш массив называется myTableViewData):

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return [myTableViewData count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // This assumes you are using Storyboard and have declared your Dynamic Prototype Cell Identifier 
    OnCallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; 

    NSDictionary *selRow = (NSDictionary *)[myTableViewData objectAtIndex:indexPath.row]; 
    // Do the rest of your processing here 

    return cell; 
} 
Смежные вопросы