【问题标题】:String is nil with Parse.com in Swift 1.2Swift 1.2 中 Parse.com 的字符串为零
【发布时间】:2015-05-09 14:48:58
【问题描述】:

我搜索了很多问题,但没有找到答案...在我的代码运行良好之前,但它是在 Swift 1.2 之前...你能帮我知道为什么吗:找不到接受提供的参数的“!=”的重载

    var user = PFUser.currentUser()
    UserName.text = user!.username
    UserEmail.text = user!.email
    if (user["phone"] != nil)
    {
        UserPhone.text = user["phone"] as! NSString as String
    }
    else
    {
        UserPhone.text = "Unknow"
    }

编辑:该问题的解决方案很简单:只需执行:

        UserPhone.text = PFUser.currentUser()?["phone"] as? String ?? "Unknown"

【问题讨论】:

  • 这个解决方案有效:UserPhone.text = PFUser.currentUser()!["phone"] as? String ?? "Unknown"

标签: ios iphone swift parse-platform


【解决方案1】:

您可以使用 nil 合并运算符 ??。这正是它的设计目的:

UserPhone.text = user["phone"] ?? "Unknown"

这表示“如果可选的 user["phone"] 不是 nil,则打开它的值。如果是 nil,则返回值“未知”。”

【讨论】:

  • 我得到 '(@lvalue AnyObject?, StringLiteralConvertible)' 不能转换为 'StringLiteralConvertible'
  • 终于成功了,不知道为什么:UserPhone.text = PFUser.currentUser()!["phone"] as? String ?? "Unknown"
【解决方案2】:

这应该可以工作

var phoneNS : NSString? 
if let str = user["phone"] as? String {
    phoneNS = NSString(string: str)
}

【讨论】:

  • 使用 nil 合并运算符查看我的答案。语法比您的答案简单得多。
  • @DuncanC 很好,实际上并不知道那个。但是我认为他的用户[“电话”]不是可选的,因为它来自解析。
  • 在你的新解决方案中我得到'@lvalue AnyObject?'不能转换为“字符串?”在第一行 var phone : String? =用户[“电话”]
  • @KewKylyuVacquier 啊,我以为它已经是一个字符串了 :) 现在它应该可以工作了。
  • 我认为 Xcode 讨厌我:“字符串?”不能转换为“字符串?”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多