快速3:键入'任何?'没有下标成员

时间:2016-09-17 16:27:47

标签: ios swift facebook

我的图形请求一直出现这个错误吗?

  

键入'任何?'没有下标成员

错误点在结果....这只发生在我转换为swift 3 ...任何人????

 let nextrequest: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me/friends", parameters: ["fields": "name, id, gender"], httpMethod: "GET")
            nextrequest.start { (connection, result, error) -> Void in
                guard let listOfFriends = result["data"] as? [AnyObject] else {
                    return
                }
            }
        }

2 个答案:

答案 0 :(得分:8)

试试这个

let nextrequest: FBSDKGraphRequest = FBSDKGraphRequest(graphPath:"me/friends", parameters: ["fields": "name, id, gender"], httpMethod: "GET")
    nextrequest.start { (connection, result, error) -> Void in
         guard let result = result as? [String:[AnyObject]], let listOfFriends = result["data"]  else {
        return
    }
  }
}

答案 1 :(得分:6)

一点解释

  

在Swift 3中,NSDictionary,NSArray等的Value类型已经存在   改为Any。所以下标结果[key]的结果类型是Any ?,   它无法自动转换为AnyObject。

在使用结果之前,您必须明确地转换为[String:[AnyObject]]类型。

尝试使用,

let tResult = result as? [String:[AnyObject]]
guard let listOfFriends = tResult["data"] else { return; }

在@xhmar的答案中提到