Я разрабатываю приложение для iPad, в котором я позволяю пользователю создавать объект. Также я разрешаю ему / ей добавить 10 картинок к этому объекту. Они могут выбрать эти снимки из своей камеры или сделать новую (если у iPad есть камера).
Мой вопрос сейчас заключается в том, как лучше всего хранить эти фотографии? На мой взгляд, лучшим способом было бы использовать метод UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:finishedSavingWithError:contextInfo:), nil);
. Таким образом, я всегда могу хранить (или использовать) изображения в фотоальбоме iPad. Но в этом случае мне нужно было бы что-то сохранить в базе данных, чтобы потом можно было снова получить изображение. Итак ... Как получить URL для пути к файлу внутри метода finishedSavingWithError:contextInfo:
для хранения в базе данных?
Другим способом достижения моей цели было бы сохранить их в личной папке как:
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
imageView.image = image;
[ImageManager saveImage:image atIndex:0];
}
}
И мой saveImage
метод выполняет следующие действия:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.png", index]];
[fileManager createFileAtPath:fullPath contents:imageData attributes:nil];
Или я должен хранить изображения как BLOB в базе данных sqlite?
Лично я думаю, что эти последние 2 возможности взорваны, потому что в основном вы храните все дважды. Если вы выберете изображение из вашей галереи, оно будет храниться локально (ваша галерея) PLUS в базе данных или в подкаталоге приложения. Что является пустой тратой пространства.
Каков наилучший способ сделать это, с точки зрения производительности?
А также, если я сохраню их в каталоге, сможет ли пользователь получить доступ к этому каталогу и удалить их?
Спасибо, что поделились своей мудростью!