2016-05-26 7 views
-5

Ich kann NSUserDefaults nicht erhalten, um einen BOOL Wert zu speichern. Es ist wirklich einfach und die Leute machen es, aber es wird einfach nicht speichern. Ich habe alles versucht, was ich weiß. Der jüngste Versuch, dies zu sein:Ich kann nicht NSUserDefaults funktionieren, versuchte alles, was ich weiß, jeder hatte das gleiche Problem?

if (_EndHide == YES) { 
    NSDictionary *aProperties = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]forKey:@"EndHide"]; 
    BOOL boolValue; 
    if ([aProperties valueForKey:@"EndHide"]) 
     boolValue = [[aProperties valueForKey:@"EndHide"] boolValue]; 
} else if (_EndHide == NO) { 
    NSDictionary *aProperties = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO]forKey:@"EndHide"]; 

    BOOL boolValue; 
    if ([aProperties valueForKey:@"EndHide"]) 
     boolValue = [[aProperties valueForKey:@"EndHide"] boolValue]; 
} 

Was passiert ist, ich mache ein iOS-App-Spiel für iPhone und wenn Sie diese gut ausgewichen Objekte für Zeit, Sie das Spiel zu beenden und eine Taste auf dem Startmenü entsperren endlos benannt, nach der Geschichte.

Jetzt brauche ich diese Schaltfläche, um ständig entsperrt werden. Ich schaffte es, es durch eine Szene freizuschalten. Es funktioniert alles, aber es wird nicht unverschlossen bleiben. Hat jemand einen Rat, um mir dabei zu helfen?

Hier ist die endlose Tastenkonfiguration und Bool Konfiguration:

@property(nonatomic, getter=isActive) bool EndHide; 

@property(nonatomic) IBOutlet UIButton *endless; 

Das ist alles, der Code für die Schaltflächen und bools ohnehin zu halten entriegelt.

Ich weiß, es ist einfach, aber es wird nicht funktionieren. Vielleicht habe ich einen tiefen Bug ausprobiert, den ich auf einer anderen, aktuelleren Version von Xcode ausprobiert habe, aber immer noch ohne Erfolg. Das Problem ist hartnäckig und ein echtes Problem. Ich habe sogar versucht, das Speichern zu speichern, das hat auch nicht funktioniert.

+0

Lesen Sie [fragen]. Ihr Titel ist sehr informativ, um es gelinde auszudrücken. Verwenden Sie auch die richtige Formatierung und Groß-/Kleinschreibung. – dandan78

+0

Sie deklarieren 'boolValue' im Rahmen der 'if' /' else' Klauseln und ihr Wert geht verloren, sobald dieser Bereich abgeschlossen ist. Ihr Code kann auf 'BOOL boolValue = _EndHide;' reduziert werden. – trojanfoe

+2

Ihre Frage verwendet keine Standardeinstellungen und versucht, mit KVC ... – Wain

Antwort

0

Nach Tagen der Suche fand ich es. Was passiert, ist, statt halten die Bool geändert aka immer JA i gespeichert nur ein weiteres Bool mit diesem: im Blick haben Last Oberteil:

if (_EndHide == YES) { 
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"boolSet"]; 


    } else if (_EndHide == NO) { } 

so, wenn die bool ist ja beendet man das Spiel als dieser Code: im Hinblick auf Last oben tat: unten:

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"boolSet"]) { 
    NSLog(@"not workin -.-"); 
    } else { 
     NSLog(@"finallyyyy workin !! YAeh"); 
     _endless.hidden = NO; 
    } 

Code einfach immer erinnert sich: D danke allen für den Versuch, mir diese Methode am besten war zu helfen, endlos ist ein Knopf, ein anderes Bool erstellen, die sie im Speicher zu speichern verwenden um den Knopf zu entsperren.

2

Ich kann tatsächlich keinen Code sehen, der versucht, irgendetwas zu den Benutzervorgaben zu speichern. Sie müssen zuerst die Benutzereinstellungen erhalten Objekt

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; 

Um einen Bool Wert zu schreiben:

[defaults setBool:YES forKey:@"EndHide"]; 

Um einen Bool Wert zu lesen:

BOOL boolValue = [defaults boolForKey:@"EndHide"]; 

keine Fehler beheben, die ich gemacht habe kann dich selber.

PS. Verwenden Sie valueForKey NICHT, es sei denn, Sie verstehen wirklich, was es tut. Verwenden Sie objectForKey oder Array-Syntax.

+0

Hallo, Entschuldigung Was Sie dort sahen, war ein letzter Versuch, es zum Laufen zu bringen, ich benutzte Ihren Code wie folgt, in der Ansicht geladen wurde der Code geladen: NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; BOOL boolValue = [Standardwerte boolForKey : @ "EndHide"], als solche an diesem Punkt ist es nil, nachdem ich das Spiel beendet habe, und alles wird angezeigt und der Speichercode wird ausgeführt: NSUserDefaults * defaults = [NSUs erDefaults standardUserDefaults]; [defaults setBool: YES forKey: @ "EndHide"]; nachdem die taste erscheint aber leider immer noch nicht speichern kann, habe ich das zwar probiert aber einfach nicht funktioniert –

-1

versuchen, dies in der Ansicht tat Last

NSUserDefaults* prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setObject:@"0" forKey:@"test"]; 
NSString * testValue = [prefs ObjectforKey:@"test"]; 
NSLog(testValue); 

können Sie mir bitte sagen, was die Konsole Ausdruck wird?