2014-06-10 26 views
7

嘗試將Parse合併到一個新的Swift項目中。Swift:找不到'|'的重載接受提供的參數

當我到了該塊:

logInViewController.fields = PFLogInFieldsUsernameAndPassword | PFLogInFieldsLogInButton | PFLogInFieldsSignUpButton | PFLogInFieldsPasswordForgotten 

我得到這個錯誤的XCode 6:

Could not find an overload for '|' that accepts the supplied arguments 

任何人都知道發生什麼是錯的語法?

回答

8

使用.value然後使用結果來創建一個PFLogInFields實例:

logInViewController.fields = PFLogInFields(PFLogInFieldsUsernameAndPassword.value 
    | PFLogInFieldsLogInButton.value) 
+0

真棒!謝謝!! –

2

提摩太的答案是正確的,但最好是糾正斯威夫特的更新的代碼。

logInViewController.fields = PFLogInFields(rawValue: 
PFLogInFieldsUsernameAndPassword.rawValue | 
PFLogInFieldsLogInButton.rawValue) 

方式二:

您可以使用運算符重載較短代碼:

func +=(inout slf: PFLogInFields,other: PFLogInFields)-> PFLogInFields{ 
    slf = PFLogInFields(rawValue: slf.rawValue | other.rawValue)! 
} 

func +(a: PFLogInFields, b: PFLogInFields)-> PFLogInFields{ 
    return PFLogInFields(rawValue: a.rawValue | b.rawValue)! 
} 

並進一步:

logInViewController.fields = .UsernameAndPassword + .LogInButton 

logInViewController.fields = .UsernameAndPassword 
logInViewController.fields += .LogInButton 
1

似乎這是一個移動的目標,因爲這裏沒有任何答案似乎工作了。目前我必須使用這個:

logInViewController.fields = PFLogInFields.UsernameAndPassword | PFLogInFields.LogInButton 
+1

這似乎不適用於我在迅速2.0 – elsurudo

2

在Swift 2中似乎接受的解決方案或其他答案不起作用。 我通過將PFLogInFields封閉在一個數組中解決了我的問題。一切似乎都很好。

所以不是:

loginViewController.fields = PFLogInFields.UsernameAndPassword | PFLogInFields.LogInButton | PFLogInFields.PasswordForgotten | PFLogInFields.SignUpButton | PFLogInFields.Facebook | PFLogInFields.Twitter 

我寫道:

loginViewController.fields = [PFLogInFields.UsernameAndPassword, PFLogInFields.LogInButton, PFLogInFields.PasswordForgotten, PFLogInFields.SignUpButton, PFLogInFields.Facebook, PFLogInFields.Twitter] 
+0

移動目標... – uchuugaka

+0

你應該也能夠避免'PFLogInFields'前綴的情況下,你設置的值像一個數組 – Kevin

相關問題