gpt4 book ai didi

ios - 错误: Type [AnyHashable: Any]?没有下标成员(Swift)

转载 作者:行者123 更新时间:2023-11-30 11:15:54 24 4
gpt4 key购买 nike

我尝试使用 Snapchat 的登录工具包来允许用户使用 Snapchat 登录,但他们的文档给了我一个错误。

复制文档后会出现“Type '[AnyHashable : Any]?'”没有下标成员。错误发生在“let data =”行。如果我强制展开资源,则错误将移至下一行

let graphQLQuery = "{me{displayName, bitmoji{avatar}, externalId}}"
let variables = ["page": "bitmoji"]

SCSDKLoginClient.fetchUserData(withQuery: graphQLQuery, variables: variables, success: { (resources: [AnyHashable: Any]?) in
let data = resources["data"] //error here
let me = data["me"]
let displayName = me["displayName"]
let bitmoji = me["bitmoji"]
let bitmojiAvatarUrl = bitmoji["avatar"]
}, failure: { (error: Error?, isUserLoggedOut: Bool) in
// handle error
})

如果我解开数据资源和数据,则错误会移动到我尝试设置 me = data["me"] 的行(错误 =“Type Any 没有下标成员”)。然后,如果我尝试打开包装,错误仍然存​​在。

例如:

let graphQLQuery = "{me{displayName, bitmoji{avatar}, externalId}}"

let variables = ["page": "bitmoji"]

SCSDKLoginClient.fetchUserData(withQuery: graphQLQuery, variables: variables, success: { (resources: [AnyHashable: Any]?) in
guard let response = resources else { return }
guard let data = response["data"] else { return }
print(data)
let me = data["me"] // error here
let displayName = me["displayName"]
let bitmoji = me["bitmoji"]
let bitmojiAvatarUrl = bitmoji["avatar"]
}, failure: { (error: Error?, isUserLoggedOut: Bool) in
// handle error
})

打印出数据返回:

{
me = {
bitmoji = {
avatar = "{URL}";
};
displayName = "{NAME}";
externalId = "{ID}";
};
}

最佳答案

你必须告诉编译器静态集合类型,因为编译器要证明订阅能力。

if let data = resources["data"] as? [String:Any],
let me = data["me"] as? [String:Any] {
let displayName = me["displayName"] as! String
if let bitmoji = me["bitmoji"] as? [String:Any] {
let bitmojiAvatarUrl = bitmoji["avatar"] as! String
}
}

关于ios - 错误: Type [AnyHashable: Any]?没有下标成员(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51751659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com