• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Wert in eine Parse.com Datenbank speichern

Sofaninc

Gala
Registriert
01.08.14
Beiträge
50
Hallo

Ich beschäftige mich nun schon seit einer gewissen Zeit mit entwickeln von iOS Apps.
Ich möchte nun gerne einen Schritt weiter gehen und eine einfache App gestalten, die Werte (Text, Zahlen) in eine Datenbank (parse.com) speichert und anschliessend wieder laden kann.

Der ViewController besteht aus zwei Button (Speichern, Laden), einem Label und einem Textfeld. Durch einen Klick auf den Button Speichern soll nun der Text aus dem Textfeld in die Datenbank gespeichert werden, ein Klick auf Laden und der gespeicherte Text aus der Datenbank soll im Label angezeigt werden.

Die Verbindung zu Parse.com konnte ich schon aufbauen und testen, verlief alles erfolgreich, bar wurde in der Datenbank gespeichert.Ich habe folgenden Code in die ViewDidLoad geladen:

PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];
testObject[@"foo"] = @"bar";
[testObject saveInBackground];


Ich ging einen Schritt weiter und lud den Code in den Button(Speichern), ohne Probleme.

Nun fangen die Probleme an. Ich möchte gerne den Text aus dem Textfeld in die Datenbank speichern. Folgenden Code habe ich verwendet:

NSString *parseString = textField.text;

PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];

testObject[@"foo"] = parseString;

[testObject saveInBackground];



Leider hat es nicht funktioniert. Ich versuchte es ebenfalls mit folgendem Code:

NSString *parseString = textField.text;

PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];

testObject[@"name"] = [NSString stringWithFormat:@"%i", parseString];

[testObject saveInBackground];


Leider ohne Erfolg. Bin jetzt schon seit längerer Zeit daran, das Problem zu beheben, finde die Lösung aber nicht, auch Freund Google konnte nicht weiterhelfen.
Hoffe daher auf eure Hilfe, wie ich nun den Text aus dem Textfeld in die Datenbank speichern kann und anschließend wieder in ein Label laden kann.

Gruss

PS: Das Smily stellt ei "at" dar.
 
Da dein oberer Versuch ja funktionierte, würde ich hier mein Hauptaugenmerk auf das textField legen. Du führst leider nicht auf woher die Variable genau kommt, aber dort könnte der Hund begraben liegen. Ist das textField nicht als Outlet verknüpft und zum entscheidenden Zeitpunkt nil, ist dementsprechend auch der Text leer und es wird nichts gespeichert. Du kannst deinen Code übrigens mit "[CODE ]" in lesbarerer Form bereitstellen ;)
 
Danke für deine schnelle Antwort, hat wirklich am Textfeld gelegen.

Nun, wie bekomme ich den Text aus der Datenbank in das Label? ;)
 
Code:
PFQuery *query = [PFQuery queryWithClassName:@"GameScore"];
[query getObjectInBackgroundWithId:testObject.objectId block:^(PFObject *gameScore, NSError *error) {
// Do something with the returned PFObject in the gameScore variable.
NSLog(@"%@", gameScore);
}];
// The InBackground methods are asynchronous, so any code after this will run
// immediately.  Any code that depends on the query result should be moved
// inside the completion block above.

Laut Parse Dokumentation funktioniert das so.
 
Danke, hat alles wunderbar funktioniert.
Musste zwar noch etwas selber recherchieren, fand aber schlussendlich die Lösung.

Nun, wie es natürlich sein musste kam ein weiteres Problem auf.
Ich konnte fast erfolgreich ein LogIn System programmieren, aber nun hänge ich mit der automatischen Einloggen. Nach längerem Probieren kam ich noch immer nicht auf die Antwort, darum bitte ich um eure Hilfe.

Unter https://www.parse.com/docs/ios_guide#users-login/iOS (Offizielle Dokumentaion von parse.com) fand ich folgenden Code:

PFUser *currentUser = [PFUser currentUser];
if (currentUser) {
// do stuff with the user
} else {
// show the signup or login screen
}


Nun stellt sich die Frage, wo man den einfügen muss...

Gruss
 
Zuletzt bearbeitet:
Sobald du den currentUser für irgendetwas brauchst.
 
Ich werde es später nochmals versuchen.
Ich hätte da noch eine Frage. Ich erstellte noch zusätzlich beim registrieren ein Nummer Feld in dem ich gerne Zahlen speichern und laden möchte:


PFUser *user = [PFUser user];

user.username = registrierenUsernameString;

user.password = registrierenPasswordString;

user.email = registrierenEmailString;

user[@"Nummer"] = @"0";


Beispielshalber: Wenn ich den Button (empfangen) drücke soll die aktuelle gespeicherte Zahl, die sich im Feld Nummer in der Datenbank befindet, in einem Label angezeigt werden. Durch einen Klick auf den Button (senden) soll sich die Zahl um 1 erhöhen und wieder gespeichert werden.

Jeder Nutzer erstellt automatisch eine objectld. Wenn ich nun etwas laden möchte benötige ich die objectld, die ich logischerweise nicht weis. Natürlich könnte ich sie in der Datenbank nachschauen gehen, aber es muss sicherlich einen anderen Weg geben.

Ich hoffe ich konnte es verständlich erklären.

Gruss
 
Um es ein wenig verständlicher auszudrücken...
Wie kann ich die objectld offline in der App speichern?
 
Das musst du mir nochmals erklären.
Wenn ich gerne den Wert aus der Spalte gameScore in der Class GameScore möchte brauche ich dazu die Object...

PFQuery *query = [PFQuery queryWithClassName:@"GameScore"];
[query getObjectInBackgroundWithId:@"xWMyZ4YEGZ" block:^(PFObject *gameScore, NSError *error) {
// Do something with the returned PFObject in the gameScore variable.
NSLog(@"%@", gameScore);
}];