gpt4 book ai didi

ios - 数组越界崩溃

转载 作者:行者123 更新时间:2023-12-02 00:51:13 24 4
gpt4 key购买 nike

我目前遇到数组越界问题,无法找到修复它的方法。我从崩溃报告中怀疑这部分代码有问题。有什么建议以及我应该如何解决这个问题吗?请随意询问具体代码。

-(void)viewDidLoad
{
NSLog(@"a");
[super viewDidLoad];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];

//configure carousel1
NSString *fPath = [documentsDirectory stringByAppendingPathComponent:@"Tops"];
NSArray *directoryContent = [fileManager directoryContentsAtPath: fPath];
imageArray1 = [directoryContent mutableCopy];
NSLog(@"%@", [imageArray1 objectAtIndex:0]);←This line is 70
NSLog(@"1:::%d", [imageArray1 count]);

//configure carousel2
fPath = [documentsDirectory stringByAppendingPathComponent:@"Bottoms"];
directoryContent = [fileManager directoryContentsAtPath:fPath];
NSLog(@"%@", fPath);
imageArray2 = [directoryContent mutableCopy];
NSLog(@"2:::%d", [imageArray2 count]);

carousel1.type = iCarouselTypeLinear;
carousel2.type = iCarouselTypeLinear;

[carousel1 reloadData];
[carousel2 reloadData];

carousel1.delegate = self;
carousel1.dataSource = self;
carousel2.delegate = self;
carousel2.dataSource = self;
}

更新

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread: 0

Last Exception Backtrace:
0 CoreFoundation 0x2edecf4e __exceptionPreprocess + 126
1 libobjc.A.dylib 0x390986aa objc_exception_throw + 34
2 CoreFoundation 0x2ed235ee -[__NSArrayM objectAtIndex:] + 226
3 Appname 0x000acab8 -[iCarouselExampleViewController viewDidLoad] (iCarouselExampleViewController.m:70)
4 UIKit 0x315625fe -[UIViewController loadViewIfRequired] + 514
5 UIKit 0x315623bc -[UIViewController view] + 20
6 UIKit 0x3160c632 -[UIViewController shouldAutorotate] + 22
7 UIKit 0x31648d76 -[UIViewController _preferredInterfaceOrientationForPresentationInWindow:fromInterfaceOrientation:] + 246
8 UIKit 0x316476ae -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:animation:] + 2054
9 UIKit 0x31646700 -[UIViewController presentViewController:withTransition:completion:] + 4664
10 UIKit 0x31821656 -[UIViewController presentModalViewController:animated:] + 26
11 UIKit 0x31592f3a -[UIApplication sendAction:to:from:forEvent:] + 86
12 UIKit 0x31592eda -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 26
13 UIKit 0x31592eb4 -[UIControl sendAction:to:forEvent:] + 40
14 UIKit 0x3157eb3a -[UIControl _sendActionsForEvents:withEvent:] + 370
15 UIKit 0x3159292a -[UIControl touchesEnded:withEvent:] + 586
16 UIKit 0x315925fc -[UIWindow _sendTouchesForEvent:] + 524
17 UIKit 0x3158d688 -[UIWindow sendEvent:] + 828
18 UIKit 0x31562a20 -[UIApplication sendEvent:] + 192

最佳答案

如果我大胆猜测一下,该目录是空的。

imageArray1 = [directoryContent mutableCopy];
NSLog(@"%@", [imageArray1 objectAtIndex:0]);←This line is 70

如果 imageArray1 没有内容,第 70 行将崩溃,正如您的报告所示。为了避免崩溃,您应该检查 [imageArray1 count] 并且仅在存在值时才使用它。您的代码实际上并没有对这些数组执行任何操作,但它应该是这样的结构。您还需要对 carousel2 执行相同的操作。

//configure carousel1
NSString *fPath = [documentsDirectory stringByAppendingPathComponent:@"Tops"];
NSArray *directoryContent = [fileManager directoryContentsAtPath: fPath];
imageArray1 = [directoryContent mutableCopy];
if ([imageArray1 count] > 0) {
NSLog(@"%@", [imageArray1 objectAtIndex:0]); //This line is 70
NSLog(@"1:::%d", [imageArray1 count]);
} else {
NSLog(@"No objects in imageArray1.");
}

关于ios - 数组越界崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19477246/

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