2015-05-09 16 views
-1

我已經在許多問題上進行了搜索,但是我還沒有找到我的答案...在我的代碼工作得很好之前,它在Swift 1.2之前...可以嗎?幫助我知道爲什麼:找不到過載「!=」接受所提供的參數在Swift 1.2中String與零Parse.com無關

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" 
+0

此解決方案工作: 'UserPhone.text = PFUser.currentUser()![「phone」] as?字符串?? 「Unknown」' –

回答

0

您可以使用零合併運算符??。這正是它被設計爲:「如果可選user["phone"]nil,解開它的值,如果它是nil,返回值‘

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

,說不明’,而不是」。

+0

我得到'(@lvalue AnyObject ?, StringLiteralConvertible)'是不可轉換爲'StringLiteralConvertible' –

+0

最後這個工作不知道爲什麼: 'UserPhone.text = PFUser.currentUser()![「phone」 ]爲?字符串?? 「未知」' –

0

這應該工作

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

使用nil合併運算符查看我的答案。比你的答案簡單得多的語法。 –

+1

@DuncanC多數民衆贊成在很好,沒有真正知道那一個。不過,我認爲他的用戶[「電話」]不是可選的,因爲它來自解析。 –

+0

在你的新解決方案中,我得到'@lvalue AnyObject?'是不是可以轉換成'String?'在第一行var phone:String? =用戶[「電話」] –