问题描述
我正在编写一个允许用户在 Parse 上拍摄和存储图像的应用程序.到目前为止,我已经设法通过使用以下逻辑将图像数组保存到 Parse:
- 拍照
- 将对象添加到数组中
- 将数组转换为 NSData
- 将 NSData 转换为 PFFile
- 设置文件上传目的地(通过唯一的 objectId)
- 上传 PFFile 进行解析
这就是代码的样子;请原谅它现在在dismissViewController中的事实,我只是想让它成功保存:
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { _takenImage = (UIImage *) [info objectForKey:UIImagePickerControllerOriginalImage]; [self dismissViewControllerAnimated:YES completion:^ { // Add object to array: Working [_tankImagesArray addObject:_takenImage]; NSLog(@"Number of images taken: %lu", (unsigned long)_tankImagesArray.count); // Convert array to NSData Object NSData *imageData = [NSKeyedArchiver archivedDataWithRootObject:_tankImagesArray]; // Convert NSData Object to PFFile PFFile *imageFile = [PFFile fileWithData:imageData]; PFQuery *tankQuery = [PFQuery queryWithClassName:@"SavedTanks"]; _tankObject = [tankQuery getObjectWithId:_passedValue]; [_tankObject setObject:imageFile forKey:@"tankImages"]; [_tankObject save]; }]; }
现在,我的问题是:我将如何检索该文件?我在这里的最终目标是允许用户查看他们过去拍摄的图像,并将其添加到集合中的图片列表中并将它们上传到服务器.我只是不确定如何在文件上传后检索文件并确保保持完整性.
推荐答案
你试过了吗:
PFQuery *query = [PFQuery queryWithClassName:@"SavedTanks"]; [query whereKey:@"tankImages" equalTo:@"your_image.jpg"]; [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { if (!error) { // The find succeeded. NSLog(@"Successfully retrieved %d images.", objects.count); // Do something with the found objects for (PFObject *object in objects) { NSLog(@"%@", object.objectId); } } else { // Log details of the failure NSLog(@"Error: %@ %@", error, [error userInfo]); } }];