【发布时间】:2014-09-01 09:13:19
【问题描述】:
我尝试使用自定义模型填充 tableView,但它不起作用。
在 cellAtRow 方法中,我的自定义对象实例为空。
SmsModel.h
@interface SmsModel : NSObject
@property (nonatomic, strong) NSString *carrierId;
@property (nonatomic, strong) NSString *carrierName;
@property (nonatomic, strong) NSString *phoneNumber;
- (id)initWithData :(NSString *)phoneNumber : (NSString *)carrierId;
@end
SmsModel.m
#import "SmsModel.h"
@implementation SmsModel
- (id)initWithData :(NSString *)phoneNumber : (NSString *)carrierId
{
self = [super init];
if (self)
{
self.phoneNumber = phoneNumber;
self.carrierId = carrierId;
}
return self;
}
@end
现在这是我设置值的方式
NSArray *data = result[@"data"];
for (NSDictionary *smsData in data) {
SmsModel * smsObj = [[SmsModel alloc]initWithData:smsData[@"input"]: smsData[@"crr_id"]];
NSLog(@"smsObjphoneNumber=%@", smsObj.phoneNumber);//works
[self.SmsDataArray addObject:smsObj];
[self.tableView reloadData];
}
现在我想获取值时失败了
SmsModel * smsObj = self.SmsDataArray[indexPath.row];
NSLog(@"smsObj.phoneNumber %@",smsObj.phoneNumber);
当我记录任何内容时,它都是空的。
我什至尝试过投射
SmsModel * smsObj = (SmsModel *)self.SmsDataArray[indexPath.row];
仍然为空。
编辑
我初始化了数组:
self.SmsDataArray = [[NSMutableArray alloc]init];
但现在我得到一个错误:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 ..0]' * 首先抛出调用栈: (0x2e73ae83 0x38a976c7 0x2e670d95 0xb4a35 0x30ff1315 0x30f996cd 0x30f98ef1 0x30ebf353 0x30b45943 0x30b41167 0x30b40ff9 0x30b40a0d 0x30b4081f 0x30b3a54d 0x2e705f69 0x2e7038f7 0x2e703c43 0x2e66e471 0x2e66e253 0x333a82eb 0x30f23845 0xa4705 0x38f90ab7) libc++abi.dylib:以 NSException 类型的未捕获异常终止
【问题讨论】:
-
你实例化你的 SmsDataArray 了吗?
-
不,我没有,我必须这样做吗? @rdelmar
-
当然可以。您不能将对象添加到不存在的数组中。
-
@rdelmar 我现在启动它我收到错误,请检查我的编辑
-
你在 numberOfRowsInSection 中返回了什么?
标签: ios objective-c uitableview model-view-controller model