egal wie ich umschreibe es speichert nichts beim schliessen des app
Counter
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
-
-
Dumme Frage: Wo liest Du das wieder ein? Von alleine passiert da nämlich nix. Muss man beim Starten der Anwendung selber machen.
schönen Gruß
gandhi -
Der sollte von allein einlesen.
ganz einfacher app eingetlich
ein label ein button mit Bild
klick auf den button wird das label um eins mehr.
so gehts ja, aber wenn ich den app schließe ist das label wieder auf null
nur leider bin ich noch nicht so fit wie ihr
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MichBB22 ()
-
zum einen wird bei deiner if lediglich ein einziges mal was in die userdefaults geschrieben
sobald das einmal geschrieben wurde gibt es den key und dann schreibt er da nicht mehr rein, lass die if einfach weg , dann wird der alte wert beim touch jedes mal überschrieben
und zum anderen versuchst du wieder das Label zu speichern und den wertIch weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. -
Nein, da wird nix von alleine gelesen! Wenn du was mit setObject... In die Userdefaults schreibst musst Du das selber auslesen. Nix alleine oder automatisch
ciao
gandhi -
könnt ihr mir sagen wie ich das schreiben soll ?
-
so bekomm ich keinen Fehler aber Speicher tut er nix
Quellcode
-
- #import "ViewController.h"
- @interface ViewController ()
- @end
- @implementation ViewController
- - (id) init {
- self = [super init];
- if (self) {
- Number = 0;
- Number1 = 0;
- }
- return self;
- }
- -(IBAction)Plus:(id)sender{
- Number += 1;
- NumberLabel.text = [NSString stringWithFormat:@"%d", Number];
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [[NSUserDefaults standardUserDefaults] synchronize];
- }
- -(IBAction)Plus1:(id)sender{
- Number1 += 1;
- NumberLabel1.text = [NSString stringWithFormat:@"%d", Number1];
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [[NSUserDefaults standardUserDefaults] synchronize];
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- }
- -(void) NumberLabel:(NSString*) object havingKey:(NSString*) key {
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [defaults setObject:object forKey:key];
- [defaults synchronize];
- }
- -(NSString*) NumberLabelhavingKey:(NSString*) key {
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- NSString *retVal = [defaults valueForKey:key];
- return retVal;
- }
- - (void)didReceiveMemoryWarning
- {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- @end
-
wie soll er denn auch was speichern? du rufst ja nirgends NumberLabel:havingKey: geschweige denn NumberLabelhavingKey: zum laden auf.Knowing is not enough, we must apply.
Willing is not enough, we must do. -
das hab ich vielleicht etwas falsch formuliert, sorry
das setObject musst du schon machen, also die ZeileCode in der IF (aber halt mit Number und nicht mit dem Label), die IF selber aber nicht
bei den Methoden Plus und Plus1 fehlt das nämlich
methoden Namen und Variablen klein schreiben, Klassennamen groß
Ich weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. -
Michael schrieb:
matz schrieb:
Dann musst (solltest?) du ein synchronize an die UserDefaults schicken
matz schrieb:
Dann - guckst du weiter oben - sollst du noch ein synchronize an die defaults schicken, nachdem du etwas geändert hast.
Ein synchronize muss man im Regelfall nicht schicken, weil die Methode regelmäßig vom System selbst aufgerufen wird. Siehe Dokumentation.
Ja, ich bin mir nie sicher. Ich schicke es immer mit, weil ich da auch schon meine Problemchen mit hatte Aber danke. -
So ?
Quellcode
-
- -(IBAction)Plus:(id)sender{
- Number += 1;
- NumberLabel.text = [NSString stringWithFormat:@"%d", Number];
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- if (![defaults objectForKey:@"Number"]){
- [defaults setObject:@"Number" forKey:@"Number"];
- }
- [[NSUserDefaults standardUserDefaults] synchronize];
- }
-
-
wird leider wieder nicht gespeichert
wenn ich den app nur zumach und wiedetr auf schon. wenn ich ihn beeende aber nicht -
liest du es denn auch wieder aus und setzt das Label?Knowing is not enough, we must apply.
Willing is not enough, we must do. -
hmm ich glaub ned
i weis ned wie
Quellcode
-
- #import "ViewController.h"
- @interface ViewController ()
- @end
- @implementation ViewController
- -(IBAction)Plus:(id)sender{
- Number += 1;
- NumberLabel.text = [NSString stringWithFormat:@"%d", Number];
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- if (![defaults objectForKey:@"Number"]){
- [defaults setInteger:Number forKey:@"Number"];
- }
- [defaults synchronize];
- }
- -(IBAction)Plus1:(id)sender{
- Number1 += 1;
- NumberLabel1.text = [NSString stringWithFormat:@"%d", Number1];
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- if (![defaults objectForKey:@"Number1"]){
- [defaults setInteger:Number1 forKey:@"Number1"];
- }
- [defaults synchronize];
- }
- - (void)viewDidLoad{
- [super viewDidLoad];
- }
- -(void) NumberLabel:(NSString*) object havingKey:(NSString*) key{
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [defaults setObject:object forKey:key];
- [defaults synchronize];
- }
- -(NSString*) NumberLabelhavingKey:(NSString*) key{
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- NSString *retVal = [defaults valueForKey:key];
- return retVal;
- }
- - (void)didReceiveMemoryWarning{
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- @end
-
Wenn du schon weißt, dass du dein Vorhaben mit NSUserDefaults machen musst, warum googlest du dann nicht einfach mal danach? Da gibt es zig Tutorials, in denen das verständlich erklärt wird. Dann würdest du die Funktionen auch (besser) verstehen.
Im Endeffekt ist das nämlich total simpel:
Mit setObject: forKey: speicherst du einen Wert, verknüpft mit einem Key.
Wenn du diesen Wert beim Programmstart wieder herstellen willst, kannst du ihn bei einem NSUserDefault abfragen mit -objectForKey:, Key natürlich derselbe, den du beim Speichern verwendet hast!
...weil du eine Zahl speichern willst, kannst (solltest?) du beides mal anstatt "Object" "Integer" verwenden.
Viel Erfolg... -
MichBB22 schrieb:
i weis ned wie
Was soll die If-Abfrage? Wie initialisierst Du Number?„Meine Komplikation hatte eine Komplikation.“ -
So ?
Quellcode
- #import "ViewController.h"
- @interface ViewController ()
- @end
- @implementation ViewController
- -(IBAction)Plus:(id)sender{
- Number += 1;
- NumberLabel.text = [NSString stringWithFormat:@"%d", Number];
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [defaults setInteger:Number forKey:@"Number"];
- [defaults synchronize];
- }
- -(IBAction)Plus1:(id)sender{
- Number1 += 1;
- NumberLabel1.text = [NSString stringWithFormat:@"%d", Number];
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [defaults setInteger:Number1 forKey:@"Number1"];
- [defaults synchronize];
- }
- - (void)viewDidLoad{
- [super viewDidLoad];
- }
- -(void) NumberLabel:(NSString*) object havingKey:(NSString*) key
- {
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [defaults setObject:object forKey:key];
- [defaults synchronize];
- }
- -(NSString*) NumberLabelhavingKey:(NSString*) key
- {
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- NSString *retVal = [defaults valueForKey:key];
- return retVal;
- }
- - (void)didReceiveMemoryWarning
- {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- @end
-
wo und wie schreib ich des vom laden rein ?
-
Hör auf zu raten.
Schau dir ein Tutorial an.