Вход/Регистрация
iOS. Приемы программирования
вернуться

Нахавандипур Вандад

Шрифт:

Error Domain=ALAssetsLibraryErrorDomain Code=-3302 «Invalid data»

UserInfo=0x79 23590 {NSLocalizedFailureReason=

There was a problem writing this asset because

the data is invalid and cannot be viewed or played.,

NSLocalizedRecoverySuggestion=Try with different data,

NSLocalizedDescription=Invalid data}

Такое сообщение об ошибке вы можете получить и в случае, если попытаетесь передать URL (уникальный идентификатор ресурса), не относящийся к пакету вашего приложения.

Первый параметр, передаваемый блоковому объекту, который, в свою очередь, предоставляется методу writeVideoAtPathToSavedPhotosAlbum: completionBlock:, будет указывать URL видео, сохраненного в библиотеке ресурсов. URL такого рода может иметь следующий вид:

assets-library://asset/asset.MOV?id=F9B5F733-487C-

4418-8C8D-46ABC9FEE23B&ext=MOV

Если ваша программа впервые пытается обратиться к библиотеке фотографий на пользовательском устройстве, то iOS спросит у пользователя, разрешена такая операция или нет. Если пользователь даст разрешение, то вызов метода writeVideoAtPathToSavedPhotosAlbum: completionBlock: будет успешным. Если же разрешение получено не будет, то объект ошибки внутри блока завершения будет валидным объектом ошибки, который вы можете проверить и над которым можете выполнять действия. Если ранее пользователь не разрешил вашему приложению доступ к библиотеке фотографий, то вы не сможете изменить это решение программно. Лишь когда сам пользователь решит предоставить вам доступ к библиотеке фотографий, он изменит соответствующие настройки в разделах Settings (Настройки) и Privacy (Конфиденциальность).

В разделе 13.7 будет рассказано, как использовать такой URL при загрузке в память данных для видеофайла.

13.6. Получение фото и видео из библиотеки фотографий

Постановка задачи

Необходимо предоставить пользователю возможность выбирать фото или видео из своей библиотеки фотографий и использовать их в приложении.

Решение

При работе с объектом UIImagePickerController используйте UIImagePickerControllerSourceTypePhotoLibrary в качестве типа источника и значение kUTTypeImage или kUTTypeMovie для типа медийной информации:

— (BOOL) isPhotoLibraryAvailable{

return [UIImagePickerController isSourceTypeAvailable:

UIImagePickerControllerSourceTypePhotoLibrary];

}

— (BOOL) canUserPickVideosFromPhotoLibrary{

return [self

cameraSupportsMedia:(__bridge NSString *)kUTTypeMovie

sourceType: UIImagePickerControllerSourceTypePhotoLibrary];

}

— (BOOL) canUserPickPhotosFromPhotoLibrary{

return [self

cameraSupportsMedia:(__bridge NSString *)kUTTypeImage

sourceType: UIImagePickerControllerSourceTypePhotoLibrary];

}

— (void)viewDidAppear:(BOOL)animated{

[super viewDidAppear: animated];

static BOOL beenHereBefore = NO;

if (beenHereBefore){

/* Отображаем элемент для выбора даты только после того, как вызывается

метод viewDidAppear:, что происходит при каждом отображении вида

нашего контроллера вида */

return;

} else {

beenHereBefore = YES;

}

if ([self isPhotoLibraryAvailable]){

UIImagePickerController *controller =

[[UIImagePickerController alloc] init];

controller.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

NSMutableArray *mediaTypes = [[NSMutableArray alloc] init];

if ([self canUserPickPhotosFromPhotoLibrary]){

[mediaTypes addObject:(__bridge NSString *)kUTTypeImage];

}

if ([self canUserPickVideosFromPhotoLibrary]){

[mediaTypes addObject:(__bridge NSString *)kUTTypeMovie];

}

controller.mediaTypes = mediaTypes;

controller.delegate = self;

[self.navigationController presentModalViewController: controller

  • Читать дальше
  • 1
  • ...
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: