2017-01-25 33 views
1

我改变从SWIFT 2.1我的代码来迅速3,我在语法上面临着一些疑问,这些错误值类型的没有成员值斯威夫特3给错误

错误1:类型的值没有成员值

Alamofire.request(url).responseJSON() { 
      (JSON) in 
      switch JSON.result { 
      case .success(let data): 
      let user_id=String(data.value(forKey: "UserLoginResult")?.value(forKey: "UserID") as! Int) 

如何解决这同样也有1更多的错误

错误2:二元运算.. <不能应用于类型为int和Int的操作数?

var serviceProvicedListArray:NSMutableArray? = NSMutableArray() 

let resultObjectItems = self.serviceProvicedListArray!.value(forKey: "lstActType") 

for i in 0..<Int(resultObjectItems[0])!{ 

我该怎么解决,我是新来的swift 3,请大家帮忙!!在此先感谢

+0

'data'的类型是什么? – avismara

+0

@avismara我编辑了我的问题 –

+1

阅读可选语言的语言指南部分。 – Alexander

回答

4

您需要指定要访问其值的数据类型Dictionary

case .success(let data): 
    var userId = "" 
    if let dic = data as? [String:Any], 
     let loginDic = dic["UserLoginResult"] as? [String:Any], 
     let userID = loginDic["UserID"] as? Int { 
      userId = "\(userID)" 
    } 

对于你的第二错误你需要用可选

for i in 0..<(userArray?.count ?? 0) { 

或者你可以解开的userArray喜欢这种方式。

if let array = userArray { 
    for i in 0..<array { 
     //access array here 
    } 
} 
+0

请检查已编辑的答案:) –

+1

您应该正确地打开'userArray'。据推测,'for'循环无论如何都需要能够访问它 – Alexander

+0

在这里也可以使用'guard'更安全 – brandonscript

相关问题