Objective c 将NSNumber插入NSMutableArray

Objective c 将NSNumber插入NSMutableArray,objective-c,Objective C,allTiles是一个声明的NSmutualArray,容量为9。接下来,循环使用名为resetArray的方法插入9个NSNull对象。我有一个名为addToArray的方法,它接受NSNumber和索引,在该索引处插入值 在另一个类中,我有intcurrentTileValue=[self-getTileValue]。该值将既是数组中的数字,也是索引。每当我尝试添加到阵列时,它都会崩溃,没有说明原因 allTiles = [[NSMutableArray alloc] initWithCap

allTiles是一个声明的NSmutualArray,容量为9。接下来,循环使用名为
resetArray
的方法插入9个NSNull对象。我有一个名为addToArray的方法,它接受NSNumber和索引,在该索引处插入值

在另一个类中,我有
intcurrentTileValue=[self-getTileValue]。该值将既是数组中的数字,也是索引。每当我尝试添加到阵列时,它都会崩溃,没有说明原因

allTiles = [[NSMutableArray alloc] initWithCapacity:9];
[self resetArray:allTiles];

- (void) resetArray:(NSMutableArray*) array {
for (int i = 0; i < 9; i++) {
    [array insertObject:[NSNull null] atIndex:i];
}
}

- (void) addToArray:(NSNumber*)value :(int)index {
[allTiles insertObject: value atIndex:index];
}
//Different class
//Here is where I am trying to insert into the array.
[(BoxView *)self.superview addToArray:(NSNumber*)currentTileValue :currentTileValue];
allTiles=[[NSMutableArray alloc]initWithCapacity:9];
[自复位阵列:所有瓷砖];
-(void)resetArray:(NSMutableArray*)数组{
对于(int i=0;i<9;i++){
[array insertObject:[NSNull]索引:i];
}
}
-(void)addToArray:(NSNumber*)值:(int)索引{
[allTiles insertObject:value atIndex:index];
}
//不同阶层
//这里是我试图插入数组的地方。
[(BoxView*)self.superview addToArray:(NSNumber*)currentTileValue:currentTileValue];

什么会导致此崩溃?

您声明
currentTitleValue
是一个
int
。鉴于此,您需要更改此行:

[(BoxView *)self.superview addToArray:(NSNumber*)currentTileValue :currentTileValue];
致:

不能将
int
强制转换为
NSNumber
指针。你需要转换它

另外,您的
addToArray
方法不正确。由于使用9个
NSNull
对象预先填充数组,因此需要调用
replaceObjectAtIndex:withObject:
,而不是
insertObject:atIndex
(假设您始终只需要9个值):

您还应该将
addToArray::
方法重命名为更好的方法:

- (void)addToArray:(NSNumber*)value index:(int)index {

反应很好,非常感谢。这也帮助我解决了接下来要问的扩展数组问题。当你说要把它改名为更好的名字时,有什么更好的名字呢?好的,我现在看到了区别。这会给方法名添加什么?现在您可以这样调用它:
[(BoxView*)self.superview addToArray:@(currentTileValue)index:currentTileValue]。请注意,在这种情况下,崩溃信息肯定是可用的,您只是不知道如何找到它。首先,添加一个异常断点。(选择断点视图,按底部的“+”并选择添加异常断点。)下一步,请参阅。我肯定是一名新的Objective-C程序员,感谢您提供信息/问题链接。
[allTiles replaceObjectAtIndex:index withObject:value];
- (void)addToArray:(NSNumber*)value index:(int)index {