gpt4 book ai didi

objective-c - 应用程序在重新启动时无法正常运行

转载 作者:行者123 更新时间:2023-11-28 22:59:04 26 4
gpt4 key购买 nike

因此,我正在编写的应用程序允许用户从他们的相机胶卷上传照片,并将其显示在 UIImageView 中。我有一个“保存”按钮,可以在按下时保存图像。我还有一个“编辑”按钮,当点击时,它允许用户点击照片并将其删除。这是我遇到问题的地方。

在我添加三张图片的测试运行中,点击保存按钮,然后删除它们,它们完美地删除了。我可以完全关闭并重新启动该应用程序,图像不再存在。但是,如果我添加三张图片,点击保存按钮,然后关闭并重新启动应用程序,然后尝试删除照片,它根本不起作用。图像从屏幕上消失,但在重新启动时再次加载。很奇怪。我是 Objective-C 的新手,我很惊讶我能走到这一步,所以我在弄清楚如何从数组中删除它时遇到了问题。

我在 ym 代码中有 NSLog(@"User Clicked Yes. Deleting index %d of %d", alertView.tag, [array count]);,当我在关闭前删除它时应用程序,它显示数组计数中有对象。当我再次从 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 文件放在了维基中。这是我的整个 .h 文件:github.com/Joey502/Test-Thing/wiki/.h-Class-File 这是我的整个 .m 文件:github.com/Joey502/Test-Thing/wiki/.m-Class-File

最佳答案

问题出在您的 viewDidLoad 方法中,您在那里初始化了 self.array 但是当将图像加载到您的 UIImageView 时,您有忘记将它们添加到数组中,这就是删除功能不起作用的原因。您的删除函数正在尝试从空数组中删除对象。

在您的 if 语句中,您需要将 UIImageView 添加到 self.array(注意:您需要更改 self.arrayNSMutableArray 以便这个特定的方法工作)

if (!imageView.image) {
imageView.image = loadedImage;
[self.array addObject:imageView];
}
else if (!imageView2.image) {
imageView2.image = loadedImage;
[self.array addObject:imageView2];
}

等等。

关于objective-c - 应用程序在重新启动时无法正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10285045/

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