установка UITableView из NSMutableArray ошибка - PullRequest
0 голосов
/ 06 марта 2012

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

ошибка:

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

оригинальный способ настройки self.measurement и 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:
        cell.textLabel.text=@"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];
}

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

спасибо

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

Во-первых, не используйте делегат приложения для получения данных.Либо получите это, используя методы внутри вашего 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;
}
1 голос
/ 06 марта 2012

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

Попробуйте изменить эти строки

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

на следующие:

cell.textLabel.text=[NSString stringWithFormat:@"%@", [self.measurements objectAtIndex:indexPath.row]];
cell.detailTextLabel.text=[NSString stringWithFormat:@"%@", [self.subinfo objectAtIndex:indexPath.row]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...