gpt4 book ai didi

ios - 将多张图片上传到 Parse 的正确方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:16 25 4
gpt4 key购买 nike

我正在使用名为 ELCImagePicker 的开源自定义类保存多张图像。在特定选项卡的 Controller 的 ViewDidLoad 方法中可以找到使用 ELCImagePicker 的代码。

ELCImagePickerController *imagePicker = [[ELCImagePickerController alloc]initImagePicker];
imagePicker.maximumImagesCount = 20;
imagePicker.imagePickerDelegate = self;

[self presentViewController:imagePicker animated:YES completion:nil];

目前,我用来将图像本身上传到作为后端服务的 Prase 的方法是

- (void)elcImagePickerController:(ELCImagePickerController *)picker didFinishPickingMediaWithInfo:(NSArray *)info
{
NSData *fileData;
NSString *fileName;
NSString *fileType;

for(id image in info){

fileData = UIImagePNGRepresentation(image);
fileName = @"image.png";

PFFile *imageFile = [PFFile fileWithName:fileName data:fileData];
[imageFile saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (error){
UIAlertView *errorAlert = [[UIAlertView alloc]initWithTitle:@"Image Upload Error" message:@"please try sending your image again" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[errorAlert show];
}else{
PFObject *message = [PFObject objectWithClassName:@"Message"];
[message setObject:imageFile forKey:@"imageFile"];
[message setObject:[[PFUser currentUser] objectId] forKey:@"senderId"];
[message setObject:[[PFUser currentUser] username] forKey:@"username"];
[message saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (error){
UIAlertView *errorAlert = [[UIAlertView alloc]initWithTitle:@"Image Upload Error" message:@"please try sending your image again" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[errorAlert show];
}
}];


}
}];
}

}

首先,info 是一个数组,其中包含所选的多个图像。我目前正在枚举数组,而不是使用 Parse 的自定义 API 上传图像。到目前为止,我收到一条错误消息,内容为:“2014-04-28 11:03:58.574 One Take[42357:90b] -[__NSDictionaryM CGImage]:无法识别的选择器发送到实例 0xe9749b02014-04-28 11:03:58.582 One Take[42357:90b] 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSDictionaryM CGImage]:无法识别的选择器发送到实例 0xe9749b0'首先抛出调用堆栈:"

我想知道上传多张图片进行解析的正确方法是什么,我不确定我现在正在做的事情是否是一个好习惯。

最佳答案

解析部分不是抛出错误的部分,信息中的 id image 是错误的。它返回字典,因此您正在尝试将字典转换为 UIImage。

应该是:

for (NSDictionary * dictionary in info) {
UIImage *image = dictionary[UIImagePickerControllerOriginalImage]; //ELC packages its dictionaries with the same key as UIImagePicker
fileData = UIImagePNGRepresentation(image);

// ... the rest of your code ... //

}

您的解析保存不一定有问题;但是,它们可能会出现问题,因为它们不会跟踪哪张照片触发了错误。也许在单独的数组中跟踪错误照片,然后通知用户哪些照片上传失败。然后让他们选择仅对这些照片重试。

关于ios - 将多张图片上传到 Parse 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23348259/

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