因此,我正在编写的应用程序允许用户从他们的相机胶卷上传照片,并显示在 UIImageView 中。我有一个“保存”按钮,可以在按下时保存图像。我还有一个“编辑”按钮,当点击它时,它允许用户点击照片,它将被删除。这就是我遇到问题的地方。
在测试运行时,我添加了三个图像,点击保存按钮,然后删除它们,它们完美删除。我可以完全关闭并重新启动应用程序,图像不再存在。但是,如果我添加三张图片,点击保存按钮,然后关闭并重新启动应用程序,然后尝试删除照片,它根本不起作用。图像从屏幕上消失,但在重新启动时再次加载。很奇怪。我对Objective-C完全陌生,我很惊讶我竟然做到了这一点,所以我在弄清楚如何从数组中删除它时遇到了问题。
我有NSLog(@"User Clicked Yes. Deleting index %d of %d", alertView.tag, [array count]);
ym 代码,当我在关闭应用程序之前删除它时,它显示数组计数中有对象。当我再次从 Xcode 运行它并尝试删除已保存的图片时,它表明数组计数 = 0。重新启动时对象不在数组中。所以,问题是数组中的对象没有被正确保存。我不知道为什么不,我以为我正确地保存了它们。这就是我将它们添加到数组中的方式:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
if (imageView.image == nil) {
imageView.image = img;
[self.array addObject:imageView];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
if (imageView2.image == nil) {
imageView2.image = img;
NSLog(@"The image is a %@", imageView);
[self.array addObject:imageView2];
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
...
...
-(IBAction)saveButtonPressed:(id)sender {
NSString *docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES) objectAtIndex:0];
NSLog(@"Image view array before saving = %@", self.array);
for (UIImageView *imageViewToSave in self.array) {
NSInteger tag = imageViewToSave.tag;
UIImage *image = imageViewToSave.image;
NSString *imageName = [NSString stringWithFormat:@"Image%i.png",tag];
NSString *imagePath = [docsDir stringByAppendingPathComponent:imageName];
NSLog(@"Saving %@ to %@", image, imagePath);
[UIImagePNGRepresentation(image) writeToFile:imagePath atomically:NO];
}
NSLog(@"Save Button Pressed");
}
我认为这会保存放入数组中的对象,但显然不是。我不知道该怎么做。
仅供参考,我将我的 .h 和 .m 文件扔到了 wiki 中。这是我的整个 .h 文件:github.com/Joey502/Test-Thing/wiki/.h-Class-File 这是我的整个 .m 文件:github.com/Joey502/Test-Thing/wiki/.m-类文件