0

我正在努力在 Xcode 中将 Snapchat 登录集成到我的 iOS 应用程序中。这是我当前的代码,在我的视图控制器中实现 SCSDKLoginButton :(错误以注释突出显示)

import SCSDKLoginKit

var scLoginButton: SCSDKLoginButton!

let scLoginButton = SCSDKLoginButton()
scLoginButton.center = CGPoint(x: 200, y: 200)
view.addSubview(scLoginButton)



    @IBAction func loginButtonTapped(_ sender: Any) {
    SCSDKLoginClient.login(from: self, completion: { success, error in

        if let error = error {
            print(error.localizedDescription)
            return
        }

        if success {
            self.fetchSnapUserInfo()
        }
    })
}


private func fetchSnapUserInfo(){
    let graphQLQuery = "{me{displayName, bitmoji{avatar}}}"

    SCSDKLoginClient
        .fetchUserData(
            withQuery: graphQLQuery,
            variables: nil,
            success: { userInfo in

                if let userInfo = userInfo,
                    let data = try? JSONSerialization.data(withJSONObject: userInfo, options: .prettyPrinted),
                    let userEntity = try? JSONDecoder().decode(UserEntity.self, from: data) { // ERROR HERE

                    DispatchQueue.main.async {
                        self.goToLoginConfirm(userEntity)
                    }
                }
        }) { (error, isUserLoggedOut) in
            print(error?.localizedDescription ?? "")
    }
}

在添加“// ERROR HERE”的行上,我不断收到错误“使用未解析的标识符'UserEntity'”。我直接从 Snapchat LoginKit 教程中复制并粘贴了该方法,但我不知道如何修复它。很感谢任何形式的帮助 :))

(顺便说一句,我的 AppDelegate 和 info.plist 文件已经实现了所需的代码)

4

1 回答 1

0

UserEntity 是您应该在项目中创建它的模型,我想您忘记执行此步骤:UserEntity.swift:

struct UserEntity { 让显示名称:字符串?让头像:字符串?

private enum CodingKeys: String, CodingKey {
    case data
}

private enum DataKeys: String, CodingKey {
    case me
}

private enum MeKeys: String, CodingKey {
    case displayName
    case bitmoji
}

private enum BitmojiKeys: String, CodingKey {
    case avatar
}

}

扩展用户实体:可解码 {

init(from decoder: Decoder) throws {
    let values = try decoder.container(keyedBy: CodingKeys.self)
    let data = try values.nestedContainer(keyedBy: DataKeys.self, forKey: .data)
    let me = try data.nestedContainer(keyedBy: MeKeys.self, forKey: .me)

    displayName = try? me.decode(String.self, forKey: .displayName)

    let bitmoji = try me.nestedContainer(keyedBy: BitmojiKeys.self, forKey: .bitmoji)
    avatar = try? bitmoji.decode(String.self, forKey: .avatar)
}

}

于 2019-06-02T10:02:50.750 回答