2017-03-04 12 views
-5
enter code here 
@IBOutlet weak var textfield: UITextView! 

@IBOutlet weak var label: UILabel! 


var sentimentURL = "https://api.havenondemand.com/1/api/sync/analyzesentiment/v2?text=this+is+lethargic&apikey=e55bc0ff-70a5-4270-b464-aaaf3dfcc8de&text=" 
var sentimentResponse:NSDictionary! 

func getSentiment() { 
    var error:NSError? 
    var encodedText = textfield.text.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) 


    Get.JSON(url: sentimentURL+encodedText!) { 
     (response) in 
     self.sentimentResponse = response 

     DispatchQueue.main.async() { 

      var agggregate = self.sentimentResponse["aggregate"]!["sentiment"]! as String 
      self.label.text = agggregate 

     } 
    } 
} 

"VAR agggregate = self.sentimentResponse [" 集計 "]![" 感情 "]文字列として!" イムのようなエラーを取得タイプ 'Any'はSubscript Members.pleaseを持たないので、この問題のソートにお手伝いします。あなたは事前に...エラー取得 - タイプ 'を任意の' がありません添字メンバー - この行のswift3

+0

このエラーをソートする際に、エラーplzヘルプをまだ取得していません。@ERAaya –

答えて

0

あなたは関数Get.JSONを使用しています。それが何であるか、あるいはどのようなデータタイプが返答されるかは教えてくれません。

私はそれがタイプAny、またはおそらく[String:Any]であると推測しています。

コンパイラは、self.sentimentResponseに含まれるデータの種類がわからないため、エラーが発生します。

あなたは正しい型にキャスト試みることができる:

guard let typedResponse = response as? [String: [String:String]] else {return} 
self.sentimentResponse = typedResponse 
guard let aggregate = typedResponse["aggregate"] else {return} 
guard let sentiment = aggregate["sentiment"] else {return} 
DispatchQueue.main.async() { 
    self.label.text = sentiment 
} 

(上記のコードでは、私は簡単にデバッグを行うために3つの別々のガード文を使用していますが、3つの別々のLET文で1つのガード文を使用することができます。

+0

私がurコードで実行したときに返信するためのhey @duncanc tanq imこのコードの最初の行でこのエラーを取得する必要があります。 [String:[String:String]] –

+0

残念ながら、オプションの型はありません。最初の行では 'as! 'は' as?'だったはずです –

+0

tanq非常に多くの仲間は今働いています... –

関連する問題