无法使用NSString初始化NSMutableArray

时间:2013-03-22 01:22:31

标签: ios nsstring nsmutablearray init

我在使用2 NSMutableArray个对象_entryArray初始化名为NSString的{​​{1}}时遇到问题。我收到以下错误:

  

由于未捕获的异常'NSRangeException'而终止应用程序,原因:' * - [__ NSArrayM objectAtIndex:]:索引1超出空数组的边界'

当我尝试初始化它而没有任何对象时,我没有错误。我该怎么办?

非常感谢

代码:

@"00:00:00"

1 个答案:

答案 0 :(得分: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。您发布的所有代码实际上都不会导致错误。您需要提供更多详细信息,以确定哪个阵列确实会导致问题。