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:-

enter image description here

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

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

reactjs - React router and this.props.children - how to pass state to this.props.children -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -