gpt4 book ai didi

objective-c - 尝试对数组进行排序时崩溃

转载 作者:行者123 更新时间:2023-12-03 17:45:57 25 4
gpt4 key购买 nike

我试图在我制作的太空射击游戏中取得高分。因此,我要做的就是使用以下代码保存分数:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSNumber *highscore = [[NSNumber alloc] initWithInt:_totalSeconds];
NSString *choice = [NSString stringWithFormat:@"%@/userschoice", documentsDirectory];
NSMutableArray *array = [NSArray arrayWithContentsOfFile:choice];
[array addObject: highscore];
[array writeToFile:choice atomically:YES];

其中整数 _totalSeconds是用户的分数。然后,在我的 viewDidLoad函数中,输入以下代码:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *choice = [NSString stringWithFormat:@"%@/userschoice", documentsDirectory];
NSMutableArray *array = [NSArray arrayWithContentsOfFile:choice];
int _highscoresAmount = [array count];
NSNumber *highscore2 = [[NSNumber alloc] init];
NSNumber *highscore2Two = [[NSNumber alloc] init];

int _count = 0;

while (_count<_highscoresAmount){

for (int i=0; i<_highscoresAmount; i++){

int j = i+1;
highscore2 = [array objectAtIndex:i];
highscore2Two = [array objectAtIndex:j];
if (highscore2Two > highscore2){

[array replaceObjectAtIndex:i withObject:highscore2Two];
[array replaceObjectAtIndex:j withObject:highscore2];

}


}

_count = _count + 1;

}


for (int i=0; i< _highscoresAmount;i++){

highscore2 = [array objectAtIndex:i];
NSString *highscore3 = [NSString stringWithFormat:@"%@", highscore2];
NSLog(highscore3);

}

此代码的目标是使用代码中指定的路径检索我在文件中写入的数组。然后,我想将数组从最高到最低排序。

这样可以构建良好,但是当我加载 View 时,应用程序崩溃了。问题是什么?

注意:我也尝试使用类似的代码在for循环内执行for循环,并且发生了相同的问题。

另外,这是崩溃日志:

无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22
无法读取未知的加载命令0x22

退出

最佳答案

我在这里看到两大错误。第一个是您将数组声明为NSMutableArray,但实际上是创建一个NSArray。您需要使用[NSMutableArray arrayWithContentsOfFile:]来创建可变数组。

第二个问题是您不应该实现自己的排序算法。只需使用内置的排序方法(例如-sortUsingComparator :)

(编辑)

哦,同样,您应该使用-stringByAppendingPathComponent而不是+ stringWithFormat来构造路径

关于objective-c - 尝试对数组进行排序时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18341000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com