【发布时间】:2011-03-20 11:19:20
【问题描述】:
工作阻碍了学习 Objective C,但我现在又回来了,这让我发疯了。
这是我的代码:
i=0;
for (i=0;[photoList count]; i++) {
NSLog(@"%i",i);
NSLog(@"%@",[photoList objectAtIndex:i]);
NSString *fileName = [photoList objectAtIndex:i];
sendImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:fileName ofType:nil]];
UIImageWriteToSavedPhotosAlbum(sendImage,self,@selector(savedPhotoImage:didFinishSavingWithError:contextInfo:),NULL);}
photoList 只是一个像这样的 NSArray,除了有 24 个对象:
NSArray* photoList = [NSArray arrayWithObjects:@"Photo 1.jpg",
@"Photo 2.jpg",
@"Photo 3.jpg",
@"Photo 4.jpg",nil];
它可以工作...它将照片复制到相机胶卷...然后崩溃
2010-07-24 19:34:36.116 iCardz2go Poindexter[29662:207] * 由于未捕获的异常“NSRangeException”而终止应用程序,原因:'* -[NSArray objectAtIndex:]: index 24 越界 [0 .. 23]'
我尝试了各种配置,例如
for (i=0;1<23; i++)
只为得到 2010-07-24 19:51:01.017 iCardz2go Poindexter[29908:207] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“+ [NSInvocation invocationWithMethodSignature:]:方法签名参数不能为 nil”
所以它正在读取 nil 并传递它。
我知道这将是一件我已经忘记的非常简单的事情。为什么它不在照片 23(计数)处跳出循环?
非常感谢您的帮助! P
【问题讨论】:
-
如果有24个对象,计数怎么可能是23?
-
您应该学习 C 编程语言教程,因为它有望涵盖循环等结构。 Objective-C 是 C 之上的一个相当薄的层,因此熟悉 C 将有助于您也掌握 Objective-C。
-
Marcelos - 因为我认为 NSArray 从 0 开始计数...不是吗?
-
有效索引的范围是 0 到 23,但计数仍然是 24。
标签: iphone objective-c for-loop nsarray