2016-09-21 2 views
0

У меня есть эта странная ошибка и у меня нет никакой идеи, чтобы ее исправить.ошибка swift 3 Downcast от 'PHAsset?' на «PHAsset» только разворачиваются дополнительные опции; Вы хотели использовать '!'?

Мой код хорошо работает в Xcode 7.3. Но после обновления до Xcode 8 у меня было почти 17 ошибок и 21 предупреждение. Это может быть некоторое изменение синтаксиса в Swift 3

Решено все, но не может понять это: Downcast from 'PHAsset?' на «PHAsset» только разворачиваются дополнительные опции; Вы хотели использовать '!'?

помощь, пожалуйста

let valorFoto = tuplesFoto.valorfoto.substring(to: tuplesFoto.valorfoto.characters.index(tuplesFoto.valorfoto.endIndex, offsetBy: -4)) 

      if let asset = PHAsset.fetchAssets(withLocalIdentifiers: [valorFoto], options: nil).firstObject as? PHAsset 
      { 
       PHImageManager.default().requestImageData(for: asset, options: nil, resultHandler: { (data: Data?, identificador: String?, orientaciomImage: UIImageOrientation, info: [AnyHashable: Any]?) -> Void in 

        if let data = data 
        { 
         if let image = UIImage(data: data) 
         { 
          DispatchQueue.main.async(execute: {() -> Void in 
           self.images.updateValue(image, forKey: tuplesFoto.valorfoto) 
           self.colDragAndDrop.reloadData() 
          }) 
         } 
        } 
       }) 

      } 
      else 
      { 
       if let image = UIImage(named: "no_media") 
       { 
        images.updateValue(image, forKey: tuplesFoto.valorfoto) 
       } 
      } 
+0

Походит 'fetchAssets' возвращает' 'PHAsset?. Вы пытались просто удалить 'as? PHAsset'? – zneak

+0

это сработало. Я ответил вам очень благодарен – david

ответ

1

Строка кода: перед тем

if let asset = PHAsset.fetchAssets(withLocalIdentifiers: [valorFoto], options: nil).firstObject as? PHAsset 

после

if let asset = PHAsset.fetchAssets(withLocalIdentifiers: [valorFoto], options: nil).firstObject 
+0

, поэтому код после работы? –