快照工具包登录工具包错误(Swift)
复制文档会使我得到一个“Type”[AnyHashable:Any]?“没有下标成员。错误发生在“let data=”行上。如果我强制展开资源,则错误会移动到下一行快照工具包登录工具包错误(Swift),swift,snapchat,swift-dictionary,Swift,Snapchat,Swift Dictionary,复制文档会使我得到一个“Type”[AnyHashable:Any]?“没有下标成员。错误发生在“let data=”行上。如果我强制展开资源,则错误会移动到下一行 let graphQLQuery = "{me{displayName, bitmoji{avatar}, externalId}}" let variables = ["page": "bitmoji"] SCSDKLoginClient.fetchUserData(withQuery: graphQLQuery
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”](error=“Type Any has no subscript members”)。如果我尝试展开我,那么错误仍然存在
例:
打印数据返回:
{
me = {
bitmoji = {
avatar = "{URL}";
};
displayName = "{NAME}";
externalId = "{ID}";
};
}
这是因为
[AnyHashable:Any]?
是可选的
这就是它给出错误的原因
类型“[AnyHashable:Any]”没有下标成员
因此,您需要使用if let
条件对其进行包装,如下所示:
if let response = resources {
let data = response["data"] //then cast your objects here
}
或者您可以使用guard let
:
guard let response = resources else { return }
之后,您可以使用
response
对象。所有这些操作都是将错误向下推。如果我使用guard let展开资源,然后展开数据,我会得到错误“Type Any has no subscript members”,在这里我试图设置me=data[“me”],如果我尝试在我身上使用guard let,错误仍然存在。如果我打印(数据),结果的结构如下:{me={bitmoji={avatar=“…编辑的问题,以反映试图打开的问题
guard let response = resources else { return }