2016-04-27 7 views
-1

エラーメッセージに「String ?!」のダウンキャストが表示されます。 to 'String'はオプションをアンラップするだけです。 「!!」を使用することを意味しましたか? StringをNSArrayに置き換えましたが、うまくいきませんでした。誰もがこれを修正する方法を知っていますか?コードをXcode7.2からXcode7.3に変換するとエラーが発生する

returnFirebaseUrl(self.myRootRef).queryLimitedToLast(1000).observeEventType(FEventType.ChildAdded, withBlock: { (snapshot) in 

      self.showProgressHUD() 

      // 3 codes below are the reason why I got error for. 
      let text = snapshot.value["text"] as? String 
      let sender = snapshot.value["from"] as? String 
      let name = snapshot.value["name"] as? String 


      var isOutGoing:Bool 

      if sender == GetUserId(){ 
       isOutGoing = true 
      }else{ 
       isOutGoing = false 
      } 

      let mediaItem = self.createPhotoItem(Const.S3_URL + text!, isOutgoing: isOutGoing) 

      var message:JSQMessage 
      if text!.hasSuffix(".jpg"){ 
       message = JSQMessage(senderId: sender, displayName: name, media: mediaItem) 

      }else{ 
       message = JSQMessage(senderId: sender, displayName: name, text: text) 
      } 
      self.messages?.append(message) 

答えて

0

snapshot.valueもアンラップする必要があります。おそらくthismよう

何か:

guard let value = snapshot.value, 
    text = value["text"] as? String, 
    sender = value["from"] as? String, 
    name = value["name"] as? String else { 
     fatalError("Oops, one of the values was nil") 
} 

// here you can use unwrapped text, sender and name 
+0

私が試したが、うまくいきませんでした:あなたが試みることができる何

は、次のようなものです。あなたはこれに対する解決策を知っていますか? – hujihuji

+0

「うまくいかない」という意味は分かりませんが、私は占いの力を持っていません...エラーメッセージは何ですか?*何が起きるべきではないのでしょうか?また、何かデバッグしましたか? 'snapshot'のタイプは何ですか?それはオプションかどうか?等 – Moritz

0

あなたは辞書としてそれを使用することができるようにするためにsnapshot.valueのラップを解除する必要があります。 ガイドは '!'を使用して 'unwrap'を強制するのは安全ではありません。クラッシュする可能性があります。

if let valueDictionary = snapshot.value as? Dictionary<String, AnyObject> { 
     let text = snapshot.value["text"] as? String //this will still be optional and might need to carefully unwrap 
     etc etc 
    } 
+0

私は試みたが動作しなかった。あなたはこれに対する解決策を知っていますか? – hujihuji

+0

上記のソリューションを試すときに発生するエラーは何ですか? –

関連する問題