我尝试使用自定义模型来填充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类型的未捕获异常终止
答案 0 :(得分:0)
现在,当我想获得值
时,它失败了
这可能是因为你还没有创建数组self.SmsDataArray
。如果该属性为nil
,则您调用的任何方法(包括objectAtIndex:
或等效的简写)都将返回nil。
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 ..
这里的消息几乎告诉你问题是什么。您正在尝试访问阵列中不存在的项目。尝试用条件包围数组访问,如下所示:
if (indexPath.row < [self.SmsDataArray count]) {
return self.SmsDataArray[indexPath.row];
}
else {
NSLog(@"Oops, I just tried to access a non-existent element from the array!");
}
有可能发生这种情况,因为你的表中某些行的行数多于数组中的项目。