2015-08-29 2 views
2

Я пытаюсь обновить мой проект от Свифта до Swift 2, но я получаю сообщение об ошибке с помощью следующего кода:Невозможно присвоить значение типа «[AnyObject]» к значению типа '[String] Swift 2

let PhotoController = UIImagePickerController() 
     PhotoController.delegate = self 
     PhotoController.sourceType = UIImagePickerControllerSourceType.Camera 

     let mediaTypes:[AnyObject] = [kUTTypeImage] 

     PhotoController.mediaTypes = mediaTypes 

     PhotoController.allowsEditing = false 

     self.presentViewController(PhotoController, animated: true, completion: nil) 

на следующей строке:

PhotoController.mediaTypes = mediaTypes 

компилятором указывают на эту ошибку:

cannot assign a value of type '[AnyObject]' to a value of type '[String]'

Можете ли вы помочь мне, пожалуйста? Спасибо большое!

ответ

7

Если вы уверены, что массив типа [String] вы можете сделать вынужденный бросок:

PhotoController.mediaTypes = mediaTypes as! [String] 

В противном случае я бы предложил использовать flatMap и индивидуальный дополнительный оттенок каждого объекта:

PhotoController.mediaTypes = mediaTypes.flatMap{ $0 as? String } 
+0

Это работает! спасибо большое – Mansour

+0

спасибо, это будет очень полезно – iksnae

0

Просто мое предположение, но, судя по документации https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIImagePickerController_Class/#//apple_ref/occ/instp/UIImagePickerController/mediaTypes

несмотр на тот факт, что типы файлов является [AnyObject] Apple, парни в их примере приведения его в [String] (например, на Obj-с!)

myImagePickerController.mediaTypes = 
    [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil]; 

Так что я бросил в строку

Смежные вопросы