2014-06-10 21 views
7

Der Versuch, Parse in ein neues Swift-Projekt zu integrieren.Swift: Konnte keine Überladung für '|' das akzeptiert die angegebenen Argumente

Wenn ich zu diesem Block erhalten:

logInViewController.fields = PFLogInFieldsUsernameAndPassword | PFLogInFieldsLogInButton | PFLogInFieldsSignUpButton | PFLogInFieldsPasswordForgotten 

Ich erhalte diesen Fehler in XCode 6:

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

jeder passieren zu wissen, was mit dieser Syntax falsch ist?

Antwort

8

Verwenden Sie die .value dann das Ergebnis verwenden, um eine PFLogInFields Instanz zu erstellen:

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

awesome! Danke!! –

2

Timothy Antwort ist richtig, aber es ist besser, den Code mit Swift-Update zu korrigieren.

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

Zweiter Weg:

Sie können Operator für kürzeren Code Überlastung:

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)! 
} 

Und weiter:

logInViewController.fields = .UsernameAndPassword + .LogInButton 

oder

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

Scheint dies ein bewegliches Ziel, da keine der Antworten hier scheint mehr zu funktionieren. Derzeit habe ich diese verwenden:

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

Dies scheint nicht für mich in Swift 2.0 – elsurudo

2

In Swift 2 scheint es, dass die akzeptierte Lösung oder andere Antworten nicht funktionieren. Ich habe mein Problem gelöst, indem ich die PFLogInFields in ein Array eingeschlossen habe. Alles scheint gut zu funktionieren.

Also statt:

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

Ich schrieb:

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

Moving Ziel ... – uchuugaka

+0

Sie sollten auch in der Lage, die "PFLogInFields" Präfix in dem Fall zu vermeiden, wenn Sie den Wert wie ein Array setzen – Kevin

Verwandte Themen