ios - NSUserDefaults returns null after registerUserDefaults worked previously -
my code worked before, doesn't reason. testing on device, removed app , tested test flight
. defaults fail register.
nsdictionary *appdefaults = @{ [nsnumber numberwithint:50]: @"didbuyinapppurchase", [nsnumber numberwithint:0]: @"adshow" }; nslog(@"appdefaults %@", appdefaults); [[nsuserdefaults standarduserdefaults] registerdefaults:appdefaults]; [[nsuserdefaults standarduserdefaults] synchronize]; nslog(@"user default ad show %@", [[nsuserdefaults standarduserdefaults] objectforkey:@"adshow"]);
logs show
appdefaults { 0 = adshow; 50 = didbuyinapppurchase; }
so dictionary being created fine. , logging key:
user default ad show (null)
you used nsnumber numberwithint
need retrive int using
[nsuserdefaults integerforkey]
like,
nslog(@"user default ad show %ld", (long)[[nsuserdefaults standarduserdefaults] integerforkey:@"adshow"]);
edit 1 :- can store , retrieve 3 option,
option 1 :- if want save int objectforkey register class in nsuserdefault use below format,
nsdictionary *appdefaults = [nsdictionary dictionarywithobjectsandkeys:@"50",@"didbuyinapppurchase",@"0",@"adshow", nil]; [[nsuserdefaults standarduserdefaults] registerdefaults:appdefaults]; nslog(@"%@", [[nsuserdefaults standarduserdefaults] objectforkey:@"didbuyinapppurchase"]); nslog(@"%@", [[nsuserdefaults standarduserdefaults] objectforkey:@"adshow"]);
output image:-
option 2 :- store whole dictionary in nsuserdefaults , retrieve in dictionary.
nsdictionary *dic=[[nsdictionary alloc]initwithobjectsandkeys:[nsnumber numberwithint:50],@"didbuyinapppurchase",[nsnumber numberwithint:0],@"adshow", nil]; nslog(@"appdefaults %@", dic); [[nsuserdefaults standarduserdefaults] setobject:dic forkey:@"appdeaults"]; [[nsuserdefaults standarduserdefaults] synchronize]; nslog(@"user default ad show %@",[[nsuserdefaults standarduserdefaults] objectforkey:@"appdeaults"]);
retrieve in dictionary
nsmutabledictionary *mutableretrieveddictionary = [[[nsuserdefaults standarduserdefaults] objectforkey:@"appdeaults"] mutablecopy]; nslog(@"==dict %@",mutableretrieveddictionary);
option 3 :- last , easy store int individual key.
// store number separate key [[nsuserdefaults standarduserdefaults] setobject:[nsnumber numberwithint:10] forkey:@"saveint10"]; [[nsuserdefaults standarduserdefaults] setobject:[nsnumber numberwithint:15] forkey:@"saveint15"]; //retrieve , nsinteger int1 = [[[nsuserdefaults standarduserdefaults] objectforkey:@"saveint10"] intvalue]; nsinteger int2 = [[[nsuserdefaults standarduserdefaults] objectforkey:@"saveint15"] intvalue]; nslog(@"==int1 %ld",(long)int1); nslog(@"==int2 %ld",(long)int2);
i hope info useful you.
Comments
Post a Comment