0

我在使用 2 个对象初始化NSMutableArray调用时遇到问题。我收到以下错误:_entryArrayNSString@"00:00:00"

由于未捕获的异常“NSRangeException”而终止应用程序,原因:“ * -[__NSArrayM objectAtIndex:]: index 1 beyond bounds for empty array”

当我尝试在其中没有任何对象的情况下对其进行初始化时,我没有收到任何错误。我该怎么办?

非常感谢你

代码:

@implementation MainViewController{

@private
int n;
NSMutableArray *_entryArray;
NSMutableArray *_timeSinceLastEntryArray;
NSMutableArray *_timeInterval;
NSMutableArray *_timeInBackup;
NSMutableArray *_timeOutBackup;
BOOL whichButton;


}
-(void)viewWillAppear:(BOOL)animated {

}

- (void)viewDidLoad
{
    [super viewDidLoad];
    n=0;
    _brain = [[Brain alloc] init];
    _entryArray = [[NSMutableArray alloc] initWithObjects:@"00:00:00",@"00:00:00",nil];
    _timeSinceLastEntryArray = [[NSMutableArray alloc] init];
    _timeInBackup = [[NSMutableArray alloc] initWithObjects:(NSNumber *)0, nil];
    _timeOutBackup = [[NSMutableArray alloc] initWithObjects:(NSNumber *)0, nil];
    _timeInterval = [[NSMutableArray alloc] init];


    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                   initWithTarget:self
                                   action:@selector(dismissKeyboard)];

    [self.view addGestureRecognizer:tap];
}
4

1 回答 1

4

这两行导致数组的对象为零:

_timeInBackup = [[NSMutableArray alloc] initWithObjects:(NSNumber *)0, nil];
_timeOutBackup = [[NSMutableArray alloc] initWithObjects:(NSNumber *)0, nil];

您不是添加数字 0,而是添加指针 0。这与nil. 换句话说,这段代码实际上是这样的:

_timeInBackup = [[NSMutableArray alloc] initWithObjects:nil, nil];
_timeOutBackup = [[NSMutableArray alloc] initWithObjects:nil, nil];

如果您的意图是添加数字 0,请执行以下操作:

_timeInBackup = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:0], nil];
_timeOutBackup = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:0], nil];

更好的是,这样做:

_timeInBackup = [@[ @0 ] mutableCopy];
_timeOutBackup = [@[ @0 ] mutableCopy];

您还有其他空数组:_timeSinceLastEntryArray_timeInterval. 您发布的所有代码实际上都没有导致错误。您需要提供更多详细信息才能确定是哪个阵列真正导致了问题。

于 2013-03-22T01:33:49.033 回答