2017-03-04 67 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 

     } 
    } 
} 

在这一行 “变种agggregate = self.sentimentResponse [”汇总“]![”情“作为字符串!” 即时得到错误,如类型'任何'没有下标Members.please帮助我在提前排序此问题.thankyou ...得到错误 - 类型“任何”有没有下会员 - swift3

+0

仍然没有得到这个错误plz帮助排序这个错误@ericaya –

回答

0

您正在使用的功能Get.JSON。你不会告诉我们这是什么,或者什么数据类型的响应。

我猜测它是Any,或者[String:Any]

您的代码self.sentimentResponse["aggregate"]!["sentiment"]!失败,因为编译器不知道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条独立的语句让一个后卫声明并完成相同的事情)

+0

hey @duncanc tanq回答时,我运行与我的代码即时通讯获取此错误的第一行代码initilizer for conditionbinding必须有可选类型,而不是[字符串:[字符串:字符串]] –

+0

对不起。在第一行中,'as!'应该是'as'? –

+0

tanq非常适合现在它的工作... –

相关问题