Я хочу сохранить список записей данных в NSMutableArray для использования в UITableView. В других языках я использовал бы простую структуру типа для определения структуры записи, но я понимаю, что способ сделать это в Obj-C - это определить новый класс. Я сделал это следующим образом:
@interface CustSuppListItem : NSObject
@property (nonatomic, copy, readwrite) NSString *acCode;
@property (nonatomic, copy, readwrite) NSString *acCompany;
@property (nonatomic, copy, readwrite) NSString *acContact;
@property (nonatomic, assign, readwrite) double osBalBase;
@property (nonatomic, assign, readwrite) unsigned int acAccStatus;
@end
@implementation CustSuppListItem
@synthesize acCode, acCompany, acContact, osBalBase, acAccStatus;
@end
В viewDidLoad моего UITableViewController я создаю экземпляр массива:
tableListDataArray = [[NSMutableArray alloc] init];
Получив данные, я добавляю их в массив следующим образом:
CustSuppListItem *custSuppItem = [[CustSuppListItem alloc] init];
[custSuppItem setAcCode:[jsonCustSuppRecord getStringForKey:@"acCode"]];
[custSuppItem setAcCompany:[jsonCustSuppRecord getStringForKey:@"acCompany"]];
[custSuppItem setAcContact:[jsonCustSuppRecord getStringForKey:@"acContact"]];
[custSuppItem setOsBalBase:[jsonCustSuppRecord getDoubleForKey:@"osBalBase"]];
[custSuppItem setAcAccStatus:[jsonCustSuppRecord getIntForKey:@"acAccStatus"]];
[tableListDataArray addObject:custSuppItem];
[custSuppItem release];
В моей таблице метод cellForRowAtIndexPath я извлекаю данные для текущей ячейки следующим образом:
CustSuppListItem *listDataRecord = [tableListDataArray objectAtIndex:indexPath.row];
[cell.lblCompanyName setText:listDataRecord.acCompany]; // EXC_BAD_ACCESS here
[cell.lblAcCodeContact setText:[NSString stringWithFormat:@"%@, %@",
listDataRecord.acCode, listDataRecord.acContact]];
[cell.lblBalance setText:[Utils fmtNumber:listDataRecord.osBalBase withDecPlaces:2]];
[cell.lblStatus setText:[Utils exchAccStatusDesc:listDataRecord.acAccStatus]];
return cell;
В методе dealloc для контроллера представления я освобождаю NSMutableArray:
[tableListDataArray release];
Я очень плохо знаком с Obj-C, поэтому было бы здорово, если бы кто-нибудь смог подтвердить все, что я до сих пор делал, имеет смысл и в порядке. Я получаю периодическую ошибку EXC_BAD_ACCESS при попытке прочитать свойство acCompany (см. Комментарий рядом со строкой), поэтому что-то должно быть не так.
Любая помощь приветствуется,
Jonathan