Я разрабатываю приложение для 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 в базе данных или в подкаталоге приложения. Что является пустой тратой места.
Каков наилучший способ сделать это с точки зрения производительности?
А также, если я сохраню их в каталоге, сможет ли пользователь получить доступ к этому каталогу и удалить их?
Спасибо, что поделились своей мудростью!