gpt4 book ai didi

ios - 在 Sqlite 数据库中存储错误的图像文件路径。 Objective-C 、iOS

转载 作者:行者123 更新时间:2023-11-29 03:52:08 26 4
gpt4 key购买 nike

我有一个 sqlite 数据库,可以在其中存储图像和数据,然后将其显示在 ViewController 中进行编辑。

我在数据库中存储路径没有问题。

我遇到了一些问题,当我使用完相机或照片卷后,我将以下代码与 UIImagePickerController 一起使用。 UIPickerController类将图像保存到目录中,save类保存图像路径但重命名。

但是最大的麻烦在于我使用一段类似的代码发送到我的文件我把我的东西保存在我的数据库中。

此代码的作用是,因为它仅在我按下 save 之后执行,它是否重命名了我第一次结束 UIImagePickerController 时的文件路径,这意味着我将错误的图像路径存储到数据库中,并且它显示在上一个条目中。

因此,在我使用相机或照片卷后,我会在 NSLOG 中看到以下内容:

这是我使用UIImagePickerController时使用的(这是我想要放入数据库的路径)

2013-06-06 17:50:48.019 shotplacementguide001[7235:907] photo_1.png - - /var/mobile/Applications/EE759F67-DA8F-4232-BE4F-35D16D047D24/Documents/photo_1.png

这是当我按下保存时的:

2013-06-06 17:50:53.827 shotplacementguide001[7235:907] photo_2.png - - /var/mobile/Applications/EE759F67-DA8F-4232-BE4F-35D16D047D24/Documents/photo_2.png

这是我的 UIImagePickerController 代码:

 -(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSError *error = nil;
NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error];
NSString *fileName = [NSString stringWithFormat:@"photo_%i.png", [dirContents count]];
NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:fileName];
// self.presentImageFileName = [NSString stringWithFormat:fileName];
self.presentImageFileName = [NSString stringWithFormat:@"%@", fileName];
NSLog(@"%@ - - %@", self.presentImageFileName,imagePath );


// Then save the image to the Documents directory
NSString *mediaType1 = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType1 isEqualToString:@"public.image"]){
UIImage *editedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
NSData *webData = UIImagePNGRepresentation(editedImage);
[webData writeToFile:imagePath atomically:YES];
}

NSString *mediaType = info[UIImagePickerControllerMediaType];

[self dismissViewControllerAnimated:YES completion:nil];

if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *image = info[UIImagePickerControllerOriginalImage];

animalEditImageView.image = image;
if (_newMedia)
UIImageWriteToSavedPhotosAlbum(image,
self,
@selector(image:finishedSavingWithError:contextInfo:),
nil);
}
else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
{
// Code here to support video if enabled
}
}

当我按下保存时:

-(IBAction) done:(id) sender
{
Customer *customer = [[Customer alloc] init];
customer.dateTimeZone = self.dateTimeTextField.text;
customer.species = self.speciesTextField.text;
customer.gender = self.genderTextField.text;
customer.location_name = self.locationTextField.text;
customer.latitude = self.speciesTextField.text;
customer.longitude = self.speciesTextField.text;
customer.firearm = self.firearmTextField.text;
customer.comments = self.commentsTextField.text;

// Capture the file name of the image
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = addCustomerFileName;
self.customerToEdit.imagePath = [documentsDirectory stringByAppendingPathComponent:fileName];
// self.presentImageFileName = [NSString stringWithFormat:fileName];
self.presentImageFileName = [NSString stringWithFormat:@"%@", fileName];
NSLog(@"%@ - - %@", self.presentImageFileName,self.customerToEdit.imagePath );
}

如何更改上面的代码以仅采用我在 -(void)imagePickerController:(UIImagePickerController *)picker 中保存的图像路径而不重命名它,而不实际将重命名的图像保存到 to就像我所做的那样,这是错误的目录。

因为我保存了错误的图像路径,所以它会显示在上一个条目 EditViewController 中。

由于以下原因,我在使用 UIPickerController 类中的 customer.imagePath 以及在保存类中使用信息时遇到问题:

 -(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info

最佳答案

我最终编写了一个解决方案,仅从 UIPhotoPickerController 获取文件路径并存储它,而不是重命名它。

 // Capture the file name of the image
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = addCustomerFileName;
self.customerToEdit.imagePath = [documentsDirectory stringByAppendingPathComponent:fileName];
// self.presentImageFileName = [NSString stringWithFormat:fileName];
self.presentImageFileName = [NSString stringWithFormat:@"%@", fileName];
NSLog(@"%@ - - %@", self.presentImageFileName,self.customerToEdit.imagePath );

关于ios - 在 Sqlite 数据库中存储错误的图像文件路径。 Objective-C 、iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16967543/

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