Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
快照工具包登录工具包错误(Swift)_Swift_Snapchat_Swift Dictionary - Fatal编程技术网

快照工具包登录工具包错误(Swift)

快照工具包登录工具包错误(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

复制文档会使我得到一个“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”](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 }