• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> 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:mad:"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:mad:"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:mad:"TestObject"];

testObject[@"name"] = [NSString stringWithFormat:mad:"%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.
 

Buhmi

Osnabrücker Reinette
Registriert
21.11.09
Beiträge
977
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 ;)
 

Sofaninc

Gala
Registriert
01.08.14
Beiträge
50
Danke für deine schnelle Antwort, hat wirklich am Textfeld gelegen.

Nun, wie bekomme ich den Text aus der Datenbank in das Label? ;)
 

iowl

Tokyo Rose
Registriert
19.02.10
Beiträge
67
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.
 

Sofaninc

Gala
Registriert
01.08.14
Beiträge
50
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:

iowl

Tokyo Rose
Registriert
19.02.10
Beiträge
67
Sobald du den currentUser für irgendetwas brauchst.
 

Sofaninc

Gala
Registriert
01.08.14
Beiträge
50
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
 

Sofaninc

Gala
Registriert
01.08.14
Beiträge
50
Um es ein wenig verständlicher auszudrücken...
Wie kann ich die objectld offline in der App speichern?
 

Sofaninc

Gala
Registriert
01.08.14
Beiträge
50
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:mad:"GameScore"];
[query getObjectInBackgroundWithId:mad:"xWMyZ4YEGZ" block:^(PFObject *gameScore, NSError *error) {
// Do something with the returned PFObject in the gameScore variable.
NSLog(@"%@", gameScore);
}];