Ios 使用NSString初始化NSMutableArray时遇到问题
使用2个Ios 使用NSString初始化NSMutableArray时遇到问题,ios,nsstring,nsmutablearray,init,Ios,Nsstring,Nsmutablearray,Init,使用2个NSString对象@“00:00:00”初始化名为\entryArray的NSMutableArray时遇到问题。我得到以下错误: 由于未捕获异常“NSRangeException”而终止应用程序,原因:“*-[\uu NSArrayM objectAtIndex:]:索引1超出空数组的界限” 当我尝试在没有任何对象的情况下初始化它时,不会出现错误。我该怎么办 多谢各位 代码: 这两行生成的数组中没有对象: _timeInBackup = [[NSMutableArray alloc]
NSString
对象@“00:00:00”
初始化名为\entryArray
的NSMutableArray
时遇到问题。我得到以下错误:
由于未捕获异常“NSRangeException”而终止应用程序,原因:“*-[\uu NSArrayM objectAtIndex:]:索引1超出空数组的界限”
当我尝试在没有任何对象的情况下初始化它时,不会出现错误。我该怎么办
多谢各位
代码:
这两行生成的数组中没有对象:
_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];
更好的做法是:
_timeInBackup = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:0], nil];
_timeOutBackup = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:0], nil];
_timeInBackup = [@[ @0 ] mutableCopy];
_timeOutBackup = [@[ @0 ] mutableCopy];
您还有其他空数组:
\u timesineclasteryarray
和\u timeInterval
。您发布的所有代码实际上都没有导致错误。您需要提供更多详细信息,以确定是哪个数组真正导致了问题。这两行导致数组中没有对象:
_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];
更好的做法是:
_timeInBackup = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:0], nil];
_timeOutBackup = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:0], nil];
_timeInBackup = [@[ @0 ] mutableCopy];
_timeOutBackup = [@[ @0 ] mutableCopy];
您还有其他空数组:
\u timesineclasteryarray
和\u timeInterval
。您发布的所有代码实际上都没有导致错误。您需要提供更多详细信息,以确定是哪个数组真正导致了问题。您引用的例外情况是什么?(当然不是上面列出的语句之一。)\u timeInBackup=[[NSMutableArray alloc]initWithObjects:(NSNumber*)0,nil]
应该是\u timeInBackup=[[NSMutableArray alloc]initWithObjects:@0,nil]
或使用旧语法\u timeInBackup=[[NSMutableArray alloc]initWithObjects:[NSNumber numberwhithint:0],nil]
同样适用于\u timeOutBackup
(但是,如果您记录您创建的阵列,您可能会学到一些东西。\u timeInBackup和\u timeOutBackup不包含您认为它们包含的值。)这是我无法理解的。如果我只使用[[NSMutableArray alloc]init]初始化_entryArray,我就不明白了,但是如果我尝试使用对象初始化它,应用程序甚至不会启动_entryArray是可以的。但是NSLog所有的东西,这样你就能明白你有什么。你引用的例外情况是什么?(当然不是上面列出的语句之一。)\u timeInBackup=[[NSMutableArray alloc]initWithObjects:(NSNumber*)0,nil]
应该是\u timeInBackup=[[NSMutableArray alloc]initWithObjects:@0,nil]
或使用旧语法\u timeInBackup=[[NSMutableArray alloc]initWithObjects:[NSNumber numberwhithint:0],nil]
同样适用于\u timeOutBackup
(但是,如果您记录您创建的阵列,您可能会学到一些东西。\u timeInBackup和\u timeOutBackup不包含您认为它们包含的值。)这是我无法理解的。如果我只使用[[NSMutableArray alloc]init]初始化_entryArray,我就不明白了,但是如果我尝试使用对象初始化它,应用程序甚至不会启动_entryArray是可以的。但是,请记录所有内容,以便您了解您所拥有的内容。应该是[@[@0]mutableCopy]
@xlc感谢您注意到输入错误。已修复。应该是[@[@0]mutableCopy]
@xlc感谢您注意到输入错误。固定的。