swift 3:键入'Any?' 没有下标成员

sli*_*boy 6 facebook ios swift

我的图形请求一直收到这个错误?

输入'Any?' 没有下标成员

错误点在结果....这只发生在我转换为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
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

Jan*_*ans 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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Saz*_*han 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; }
Run Code Online (Sandbox Code Playgroud)

正如@xhmar的回答中提到的那样