2012-12-01 3 views
5

In meiner iOS-App verwende ich das Parse.com-Framework. Wenn die App zum ersten Mal gestartet wird oder der Benutzer nicht angemeldet ist, werden PFLogInViewController und PFSignUpViewController in der Ansicht angezeigt. Wenn der Benutzer seinen Account erstellt, erstellt die Anwendung automatisch den Benutzer, wie immer, aber es wird auch eine andere Variable unter dem Benutzer erstellt, die isPrivate heißt, die einen booleschen Wert aufruft. Meine Frage ist, wie verwende ich die PFQuery, um den Wert isPrivate für die currentUser zu bekommen?Parse.com: PFQuery Abfrage von Daten aus PFUser currentUser

+0

PFUser hat eine eigene Methode [PFUser query], um Benutzer abzufragen. – Martol1ni

Antwort

6

Mit der Abfrage können Sie viele Objekte finden, die einem Kriterium entsprechen. Dies trifft nicht wirklich zu, wenn Sie das gewünschte Objekt (den aktuellen Benutzer) bereits kennen. Sie können entscheiden, ob die mit current

[PFUser.currentUser[@"isPrivate"] boolValue]; 

Obwohl in diesem speziellen Fall ist privat, Sie nicht wirklich ein eigenes Feld halten müssen, um festzustellen, ob der Benutzer ein anonymer Benutzer (die Art von automatischen Nutzern) . Versuchen:

[PFAnonymousUtils isLinkedWithUser:PFUser.currentUser]; 

Dies funktioniert für alle Authentifizierungs utils (PFFacebookUtils, PFTwitterUtils und PFAnonymousUtils). isLinkedWithUser bestimmt, ob diese Authentifizierungssysteme über Anmeldeinformationen für einen bestimmten Benutzer verfügen.

+0

Lets sagen, ich habe auch eine andere Variable, die ein Array ist, wie würde ich das mit einem Array machen? –

+1

Wenn Sie versuchen, den Wert von einem bestimmten Objekt zu erhalten, dann können Sie davon ausgehen, dass Sie ein NSArray zurückbekommen, wenn Sie diese Eigenschaft erhalten (zB NSArray) * property = myObj [@ "arrayProperty"]). Andernfalls können Sie ein P verwenden FQuery isEqualTo. Vergleichen eines Skalars mit einem Array gibt Objekte zurück, in denen sich der Skalar im Array befindet (z. B. Dies ist am häufigsten bei PFInstallation, wo der Cloud-Code die Abonnenten von "channel" überprüft, indem er überprüft, wo das Array "channels" gleich "channel" ist). –

+0

Alles funktioniert gut, aber wenn ich versuche [[PFUser.currentUser [@ "Spitzname"] stringValue] ;. Die Konsole gibt Folgendes aus: "- [__ NSCFString stringValue]: nicht erkannter Selektor, der an die Instanz gesendet wurde". Was mache ich falsch? –

6

Nachdem ich mit PFObject, PFUser und PFQuery herumgespielt habe, fand ich die Antwort auf meine Frage. Sie müssen eine PFQuery erstellen, die die PFUser-Klasse abfragt, dann müssen Sie die Abfrage auf nur currentUser username eingrenzen und dann den Wert isPrivate anfordern.

PFQuery *query= [PFUser query]; 

[query whereKey:@"username" equalTo:[[PFUser currentUser]username]]; 

[query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error){ 

    BOOL isPrivate = [[object objectForKey:@"isPrivate"]boolValue]; 

}]; 
+0

Also versuche ich einen PFUser mit 'name' anstatt 'benutzername' abzufragen. Aus irgendeinem Grund funktioniert die Abfrage nicht. Kann ich etwas falsch machen? Ich benutze im Grunde den gleichen Code wie Sie, aber ich bekomme keine Ergebnisse ... :( – jsetting32

+0

@ jsetting32 Es könnte ein paar Dinge passieren, und mit dem Code oder mehr Hintergrundinformationen wird es nur herum stochern in der dunkel, aber ein paar Dinge, die es sein könnte, ist in der zweiten Zeile des Codes, stellen Sie sicher, dass der genaue Schlüssel im Parse.com Datenbrowser vorhanden ist und stellen Sie sicher, dass Sie den richtigen Namen haben, dh: das gleiche wie das unter dem Schlüssel in Parse.com Daten-Browser, den Sie beschrieben haben.Weitere Bereich, den ich sehe, dass Sie Probleme verursachen können, ist die dritte Zeile des Codes, innerhalb des Blocks von Code ... (lief aus Zeichen). –

Verwandte Themen