没有出现保存的图像

我试图用Core Data保存我的照片,但是,当我拍照并返回到DetailViewController ,在UIImageView中看不到任何东西。 让我解释到底发生了什么:用户按下“添加个人资料图片”button,提示他们拍摄照片后正常拍照,显示照片的预览,用户可以重新拍照或保存照片图片。 当他们推动保存图像时,ViewController将被解散,在UIImageView中看不到任何照片,当我按下保存并返回到这个视图控制器时,在UIImageView没有任何东西可以看到。

我在下面列出了我的代码。

 -(void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. if (self.device) { [self.scoutNameText setText:[self.device valueForKey:@"name"]]; [self.scoutContactText setText:[self.device valueForKey:@"number"]]; [self.scoutTeamText setText:[self.device valueForKey:@"team"]]; [self.email setText:[self.device valueForKey:@"email"]]; [self.pick1 setText:[self.device valueForKey:@"pick1"]]; [self.pick2 setText:[self.device valueForKey:@"pick2"]]; [self.pick3 setText:[self.device valueForKey:@"pick3"]]; [self.pick4 setText:[self.device valueForKey:@"pick4"]]; [self.pick5 setText:[self.device valueForKey:@"pick5"]]; [self.pick6 setText:[self.device valueForKey:@"pick6"]]; [self.jobtitle setText:[self.device valueForKey:@"jobtitle"]]; } NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); NSString *documentsPath = [paths objectAtIndex:0]; NSString *filePath = [documentsPath stringByAppendingPathComponent:@"scout.png"]; NSData *data = [NSData dataWithContentsOfFile:filePath]; [self.photo setImage:[UIImage imageWithData:data]]; } - (IBAction)ProfilePhoto:(id)sender { UIImagePickerController *picker = [[UIImagePickerController alloc] init]; if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { [picker setSourceType:UIImagePickerControllerSourceTypeCamera]; [self presentViewController:picker animated:YES completion:nil]; } else { [picker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; [picker setDelegate:self]; [self presentViewController:picker animated:YES completion:nil]; } } - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; NSData *imageData = UIImagePNGRepresentation(image); NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); NSString *documentsPath = [paths objectAtIndex:0]; NSString *filePath = [documentsPath stringByAppendingPathComponent:@"scout.png"]; [imageData writeToFile:filePath atomically:YES]; [self.photo setImage:[UIImage imageWithData:imageData]]; [picker dismissViewControllerAnimated:YES completion:NULL]; } - (IBAction)save:(id)sender { // Update existing device NSManagedObjectContext *context = [self managedObjectContext]; [self.device setValue:self.scoutNameText.text forKey:@"name"]; [self.device setValue:self.scoutContactText.text forKey:@"number"]; [self.device setValue:self.scoutTeamText.text forKey:@"team"]; [self.device setValue:self.pick1.text forKey:@"pick1"]; [self.device setValue:self.pick2.text forKey:@"pick2"]; [self.device setValue:self.pick3.text forKey:@"pick3"]; [self.device setValue:self.pick4.text forKey:@"pick4"]; [self.device setValue:self.pick5.text forKey:@"pick5"]; [self.device setValue:self.pick6.text forKey:@"pick6"]; [self.device setValue:self.email.text forKey:@"email"]; [self.device setValue:self.jobtitle.text forKey:@"jobtitle"]; NSError *error = nil; // Save the object to persistent store if (![context save:&error]) { NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]); } [self dismissViewControllerAnimated:YES completion:nil]; } 

感谢您花时间看我的问题,帮助我! 非常感谢!

您(尝试)将图像保存在默认情况下不存在的NSDocumentationDirectory (“文档”)中,以便

 [imageData writeToFile:filePath atomically:YES]; 

失败和

 NSData *data = [NSData dataWithContentsOfFile:filePath]; 

返回nil 。 您可能想要将图像保存在NSDocumentDirectory (“文档”)中。

一般来说,我会build议总是检查类似电话的返回值

 BOOL success = [imageData writeToFile:filePath atomically:YES]; 

来检测这样的错误。

除此之外,我不能在代码中看到图像(或图像path)存储在托pipe对象self.device ,这意味着它不存储在Core Data中。