iOS FBSDK结合'first_name'和'last_name'来获取全名 - 语法问题

时间:2018-02-13 15:18:52

标签: ios swift firebase-authentication

我正在尝试在 Firebase 中的单个数据库条目中合并两个 FBSDKGraphRequest 参数,以使其看起来与签名的用户相同电子邮件。

我想将Facebook的“ first_name ”和“ last_name ”合并到一个“ Full Name ”条目中。我已经尝试了我能想象到的每种语法,但我无法让它发挥作用。

目前它看起来像这样:

//.. Code that sets up the parameters and guard statement

let firstname = result["first_name"] as? String,
let lastname = result["last_name"] as? String,
let fullname = result["first_name","last_name"] as? String

//.. Code that saves details to db

名字和姓氏有效,但只要我将两者结合起来就不会执行保护块

2 个答案:

答案 0 :(得分:2)

您不能在字典中使用两个单独的键并获取一个字符串。每个键都有自己独立的字符串。你可能想做这样的事情:

guard let firstName = result["first_name"] as? String else {
    // Handle no first name
    return
}
guard let lastName = result["last_name"] as? String else {
    // Handle no last name
    return
}
let fullName = "\(firstName) \(lastName)"

换句话说,您需要使用string interpolation编写组合字符串的代码。结果字典中的任何内容都不会单独执行此操作。

旁注:似乎您需要更好地理解Swift词典(以及一般来说,Swift常量,变量和类型)的工作原理。我建议深入研究collection types文档。

答案 1 :(得分:2)

实际上,Facebook Graph API为用户提供了名为" name"的字段。它是您需要的全名。

但是如果你想在不使用guard的情况下使用firstName和lastName,请尝试:

if let firstName = result["first_name"] as? String, let lastName = result["last_name"] as? String {
    var fullName = firstName + " " + lastName
}