2017-06-15 9 views
1

私は以下の使用によって画像があるかどうかを確認しようとしているif文:二項演算子は、「UIImage」タイプのオペランドに適用することはできません

それはエラーを返ししかし
var profileImage = UIImage() 


@IBAction func submitAction(_ sender: Any) { 


    if profileImage != 0 && nameTextField.text != nil { 


    let storageRef = FIRStorage.storage().reference() 
    let databaseRef = FIRDatabase.database().reference() 

    let uid = FIRAuth.auth()?.currentUser?.uid 

    let profileImageData = UIImageJPEGRepresentation(self.profileImage, 0.4) 

    let profileImageRef = storageRef.child("ProfileImages/\(uid)/profileImage.jpg") 
    profileImageRef.put(profileImageData!, metadata: nil) { 
     metadata, error in 

     if error != nil{ 

      print("error!") 

     } 
     else{ 

      let downloadURL = metadata?.downloadURL() 
      let username = self.nameTextField.text 
      let user : [NSObject : AnyObject] = ["uid" as NSObject : uid! as AnyObject, "username" as NSObject : username! as AnyObject, "profileImageURL" as NSObject : downloadURL! as AnyObject] 



      let childUpdates = ["Users/\(uid)/" : user] 
      databaseRef.updateChildValues(childUpdates) 

     } 
     } 
     } 

    } 

「二項演算子 『!=』はタイプのオペランドに適用することはできない「UIImage」

私も皆無で0を交換しようとしましたが、これはUIImageでは動作しません。

+1

@EricAya私は何をしようとしているのかを明確に示すためにコードを更新しました。 –

+0

var profileImage = UIImage() –

+0

十分な情報があります。誰かがおそらくすぐに答えます。がんばろう。 :) – Moritz

答えて

2

profileImageを定義しますガードステートメントを使用して値があるかどうかを確認することができます。

var profileImage:UIImage? 
guard let profileImage = profileImage, let name = nameTextField.text else { return} 
let storageRef = FIRStorage.storage().reference() 
let databaseRef = FIRDatabase.database().reference() 
... 
+1

一般に、変数が 'nil 'でないかどうかをチェックするだけで、強制的に展開するのが安全であるとは限りません。別のスレッドでは、チェックして強制的に展開するまでの間に 'nil'にすることができます。 – rmaddy

+0

まあ、私はこれが変数にアクセスする唯一のスレッドだと思っていましたが、あなたは正しいです、ガードステートメントを使用することは常に安全です。 –

関連する問題