Сохранить изображение как base64 в NSUSERDEFAULTS как NSDICTIONARY
Я на самом деле использую следующий код для сохранения данных, введенных в текстовое поле, и изображения, выбранного в виде изображения в NSUSERDEFAULTS в качестве словаря. Код работает хорошо для сохранения textfield.text, но не может сохранить изображение как base64 в словаре. Пожалуйста, просмотрите код и предложить исправления.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
_profileImageView.image = image;
UIImage *updatedImage = _profileImageView.image;
NSData *imageData = UIImageJPEGRepresentation(updatedImage, 100);
NSString *strEncoded = [imageData base64EncodedStringWithOptions:0];
[_userDetailsDictionary setObject:strEncoded forKey:@"UpdatedImage"];
[self dismissViewControllerAnimated:YES completion:nil];
}
- (IBAction)saveAction:(UIBarButtonItem *)sender {
NSLog(@"the values stored in dictionary are %@",_userDetailsDictionary);
[[NSUserDefaults standardUserDefaults] setObject:_userDetailsDictionary forKey:@"UpdatedDetails"];
[[NSUserDefaults standardUserDefaults] synchronize];
ConnectionManager * connectionManager = [ConnectionManager sharedConnectionManager];
connectionManager.delegate = self;
[connectionManager sendUserUpdatedDetailsToServer:_userDetailsDictionary withToken:[[NSUserDefaults standardUserDefaults] stringForKey:@"token"]];
}
2 ответа
Не уверен, почему вы хотите сохранить изображение как строку в NSUserdefaults, это странное решение. Вы можете просто сохранить его как NSData. Или лучший способ - сохранить его в папке "Doc" приложения.
Также я заметил, что этот код неверен:
NSData *imageData = UIImageJPEGRepresentation(updatedImage, 100);
качество сжатия CGFloat от 0,0 до 1,0. 100 вне диапазона.
Я создал пример проекта с использованием вашего кода, и он отлично работает для меня. Пожалуйста, скачайте ссылку ниже и попробуйте запустить