Counter

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • egal wie ich umschreibe es speichert nichts beim schliessen des app

    Quellcode

    1. -(IBAction)Plus:(id)sender{
    2. Number += 1;
    3. NumberLabel.text = [NSString stringWithFormat:@"%d", Number];
    4. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    5. [defaults setObject:@"%dd" forKey:@"%d1"];
    6. [[NSUserDefaults standardUserDefaults] synchronize];
    7. }
  • 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 ()

  • Quellcode

    1. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    2. if (![defaults objectForKey:@"NumberLabel"])
    3. {
    4. [defaults setObject:@"NumberLabel" forKey:@"NumberLabel"];
    5. }
    6. [[NSUserDefaults standardUserDefaults] synchronize];


    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 wert
    Ich weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. :saint:
  • so bekomm ich keinen Fehler aber Speicher tut er nix

    Quellcode

    1. #import "ViewController.h"
    2. @interface ViewController ()
    3. @end
    4. @implementation ViewController
    5. - (id) init {
    6. self = [super init];
    7. if (self) {
    8. Number = 0;
    9. Number1 = 0;
    10. }
    11. return self;
    12. }
    13. -(IBAction)Plus:(id)sender{
    14. Number += 1;
    15. NumberLabel.text = [NSString stringWithFormat:@"%d", Number];
    16. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    17. [[NSUserDefaults standardUserDefaults] synchronize];
    18. }
    19. -(IBAction)Plus1:(id)sender{
    20. Number1 += 1;
    21. NumberLabel1.text = [NSString stringWithFormat:@"%d", Number1];
    22. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    23. [[NSUserDefaults standardUserDefaults] synchronize];
    24. }
    25. - (void)viewDidLoad {
    26. [super viewDidLoad];
    27. }
    28. -(void) NumberLabel:(NSString*) object havingKey:(NSString*) key {
    29. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    30. [defaults setObject:object forKey:key];
    31. [defaults synchronize];
    32. }
    33. -(NSString*) NumberLabelhavingKey:(NSString*) key {
    34. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    35. NSString *retVal = [defaults valueForKey:key];
    36. return retVal;
    37. }
    38. - (void)didReceiveMemoryWarning
    39. {
    40. [super didReceiveMemoryWarning];
    41. // Dispose of any resources that can be recreated.
    42. }
    43. @end
    Alles anzeigen
  • 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. :saint:
  • 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

    1. -(IBAction)Plus:(id)sender{
    2. Number += 1;
    3. NumberLabel.text = [NSString stringWithFormat:@"%d", Number];
    4. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    5. if (![defaults objectForKey:@"Number"]){
    6. [defaults setObject:@"Number" forKey:@"Number"];
    7. }
    8. [[NSUserDefaults standardUserDefaults] synchronize];
    9. }
    Alles anzeigen
  • hmm ich glaub ned :(
    i weis ned wie

    Quellcode

    1. #import "ViewController.h"
    2. @interface ViewController ()
    3. @end
    4. @implementation ViewController
    5. -(IBAction)Plus:(id)sender{
    6. Number += 1;
    7. NumberLabel.text = [NSString stringWithFormat:@"%d", Number];
    8. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    9. if (![defaults objectForKey:@"Number"]){
    10. [defaults setInteger:Number forKey:@"Number"];
    11. }
    12. [defaults synchronize];
    13. }
    14. -(IBAction)Plus1:(id)sender{
    15. Number1 += 1;
    16. NumberLabel1.text = [NSString stringWithFormat:@"%d", Number1];
    17. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    18. if (![defaults objectForKey:@"Number1"]){
    19. [defaults setInteger:Number1 forKey:@"Number1"];
    20. }
    21. [defaults synchronize];
    22. }
    23. - (void)viewDidLoad{
    24. [super viewDidLoad];
    25. }
    26. -(void) NumberLabel:(NSString*) object havingKey:(NSString*) key{
    27. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    28. [defaults setObject:object forKey:key];
    29. [defaults synchronize];
    30. }
    31. -(NSString*) NumberLabelhavingKey:(NSString*) key{
    32. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    33. NSString *retVal = [defaults valueForKey:key];
    34. return retVal;
    35. }
    36. - (void)didReceiveMemoryWarning{
    37. [super didReceiveMemoryWarning];
    38. // Dispose of any resources that can be recreated.
    39. }
    40. @end
    Alles anzeigen
  • 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...
  • So ?

    Quellcode

    1. ​#import "ViewController.h"
    2. @interface ViewController ()
    3. @end
    4. @implementation ViewController
    5. -(IBAction)Plus:(id)sender{
    6. Number += 1;
    7. NumberLabel.text = [NSString stringWithFormat:@"%d", Number];
    8. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    9. [defaults setInteger:Number forKey:@"Number"];
    10. [defaults synchronize];
    11. }
    12. -(IBAction)Plus1:(id)sender{
    13. Number1 += 1;
    14. NumberLabel1.text = [NSString stringWithFormat:@"%d", Number];
    15. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    16. [defaults setInteger:Number1 forKey:@"Number1"];
    17. [defaults synchronize];
    18. }
    19. - (void)viewDidLoad{
    20. [super viewDidLoad];
    21. }
    22. -(void) NumberLabel:(NSString*) object havingKey:(NSString*) key
    23. {
    24. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    25. [defaults setObject:object forKey:key];
    26. [defaults synchronize];
    27. }
    28. -(NSString*) NumberLabelhavingKey:(NSString*) key
    29. {
    30. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    31. NSString *retVal = [defaults valueForKey:key];
    32. return retVal;
    33. }
    34. - (void)didReceiveMemoryWarning
    35. {
    36. [super didReceiveMemoryWarning];
    37. // Dispose of any resources that can be recreated.
    38. }
    39. @end
    Alles anzeigen