Data to Userdefault encoder class for storing custom object - ios

Can anyone give me any link or file, which could be used globally for a project to Store data to NSUserDefault.
Which contains method to save dictionary, array,string,integer all.

#import <Foundation/Foundation.h>
#import "BSUser.h"
#interface CLServerDataManager : NSObject
+(BOOL) saveServerDataToUserDefaults:(id)data;
+(NSDictionary*) getServerDataFromUserDefaults;
//For language Selection
+(void) setLanguage:(NSString*)LanguageName;
+(NSString*) getLanguage;
+(void) setUserPassword:(NSString*)password;
+(NSString*) getUserPassword;
+(void) setUserID:(NSString*)password;
+(NSString*) getUserID;
+(void) setUserUUID:(NSString*)uuid;
+(NSString*) getUserUUID;
+(void) setUserName:(NSString*)name;
+(NSString*) getUserName;
+(void) setimagedata:(float)data;
+(float) getimagedata;
+(void) setUserProfile:(BSUser*)user;
+(BSUser*) getUserProfile;
+ (void) setApplicationPurchaseStatus:(BOOL)purchaseStatus forUser:(NSString*)fbUserID;
+ (BOOL) getApplicationPurchaseStatusforUser:(NSString*)fbUserID;
+ (void) sethintAndTutorial:(BOOL)hintState;
+ (BOOL) gethintAndtutorial;
+ (void) setDeviceToken:(NSString*)deviceToken;
+ (NSString*) getDeviceToken;
//Methods for clear all data from user defaults
+ (void) resetServerDataManager;
#end
and .m file for this
#import "CLServerDataManager.h"
#import "ClConfig.h"
#implementation CLServerDataManager
+(BOOL) saveServerDataToUserDefaults:(id)data {
// if (!data) {
// return NO;
// }
// NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// [defaults setObject:data forKey:USER_ID];
// [defaults synchronize];
// return YES;
return NO;
}
+(NSDictionary*) getServerDataFromUserDefaults {
// NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// NSDictionary* rememberMe = [defaults objectForKey:USER_ID];
// if (rememberMe == nil) {
// return nil;
// }
// return rememberMe;
return nil;
}
//For the store user select language and again fetch
+(void) setLanguage:(NSString*)LanguageName {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:LanguageName forKey:#"Language"];
[defaults synchronize];
}
+(NSString*) getLanguage {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString* Mylanguage = [defaults objectForKey:#"Language"];
if (Mylanguage == nil) {
return nil;
}
return Mylanguage;
}
//for store information cache for user's pics download
+(void) setimagedata:(float)data{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSNumber numberWithFloat:data] forKey:#"cache"];
[defaults synchronize];
}
+(float)getimagedata{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
float data = [[defaults objectForKey:#"cache"] floatValue];
if (data == 0) {
return 0;
}
return data;
}
+(void) setUserPassword:(NSString*)password {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:password forKey:#"password"];
[defaults synchronize];
}
+(NSString*) getUserPassword {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString* rememberMe = [defaults objectForKey:#"password"];
if (rememberMe == nil) {
return nil;
}
return rememberMe;
}
+(void) setUserID:(NSString*)password {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:password forKey:#"userID"];
[defaults synchronize];
}
+(NSString*) getUserID {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString* rememberMe = [defaults objectForKey:#"userID"];
if (rememberMe == nil) {
return nil;
}
return rememberMe;
}
+(void) setUserUUID:(NSString*)uuid {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:uuid forKey:#"userUUID"];
[defaults synchronize];
}
+(NSString*) getUserUUID {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString* rememberMe = [defaults objectForKey:#"userUUID"];
if (rememberMe == nil) {
return nil;
}
return rememberMe;
}
+(void) setUserName:(NSString*)name {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:name forKey:#"userName"];
[defaults synchronize];
}
+(NSString*) getUserName {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString* name = [defaults objectForKey:#"userName"];
if (name == nil) {
return nil;
}
return name;
}
//store the current login user profile to user defaults
+(void) setUserProfile:(BSUser*)user {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSKeyedArchiver archivedDataWithRootObject:user] forKey:#"user_profile"];
[defaults synchronize];
}
+(BSUser*) getUserProfile {
BSUser* returnObject = nil;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingSavedArray = [defaults objectForKey:#"user_profile"];
if (dataRepresentingSavedArray != nil)
{
returnObject = (BSUser*)[NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
}
return returnObject;
}
+ (void) setApplicationPurchaseStatus:(BOOL)purchaseStatus forUser:(NSString*)fbUserID {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSNumber numberWithBool:purchaseStatus] forKey:fbUserID];
[defaults synchronize];
}
+ (BOOL) getApplicationPurchaseStatusforUser:(NSString*)fbUserID {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSNumber* purchased = [defaults objectForKey:fbUserID];
if (purchased == nil) {
return NO;
}
return [purchased boolValue];
}
#pragma mark Set hint and tutotrial
+ (void) sethintAndTutorial:(BOOL)hintState{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSNumber numberWithBool:hintState] forKey:#"hint"];
[defaults synchronize];
}
+ (BOOL) gethintAndtutorial{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSNumber* hintstate = [defaults objectForKey:#"hint"];
if (hintstate == nil) {
return NO;
}
return [hintstate boolValue];
}
+ (void) setDeviceToken:(NSString*)deviceToken {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:deviceToken forKey:#"DeviceToken"];
[defaults synchronize];
}
+ (NSString*) getDeviceToken {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString* name = [defaults objectForKey:#"DeviceToken"];
if (name == nil) {
return nil;
}
return name;
}
+ (void) resetServerDataManager {
[[self class] setLanguage:nil];
[[self class] setUserID:nil];
[[self class] setUserName:nil];
[[self class] setUserPassword:nil];
[[self class] setUserProfile:nil];
[[self class] setUserUUID:nil];
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies])
{
NSString *domainName = [cookie domain];
NSRange domainRange = [domainName rangeOfString:#"facebook"];
if(domainRange.length > 0)
{
[storage deleteCookie:cookie];
}
}
}

Try below link, You will get thing which you need..
NSUserDefaults

Related

Save switch position after closing app

I wanted to know how to save the position of a switch to close and open the application ?
-(IBAction)switch_poids_passagers:(UISwitch *)sender {
NSString *poids_passagers_total;
if(sender.on) {
poids_passagers_total = #"1";
} else {
poids_passagers_total = #"2";
}
[[NSUserDefaults standardUserDefaults] setObject:poids_passagers_total forKey:#"poids_passagers_total"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
NSUserDefaults can save and retrieve BOOLS with a pair methods it provides:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:self.myUISwitch.on forKey:#"switchValue"];
// ...
Later on, maybe in viewWillAppear...
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL switchValue = [defaults boolForKey:#"switchValue"];
self.myUISwitch.on = switchValue;

How to write similar codes efficiently in xcode?

Example 1:
- (NSString *)userToken
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
return [userDefaults objectForKey:#"userToken"];
}
- (void)setUserToken:(NSString *)userToken
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:userToken forKey:#"userToken"];
}
- (NSString *)userName
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
return [userDefaults objectForKey:#"userName"];
}
- (void)setUserName:(NSString *)userName
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:userName forKey:#"userName"];
[userDefaults synchronize];
}
These getter and setter are very similar. Is there a smart "macro" that can help me to simplify the codes? So I will be able to write few codes for each property like this:
XXXX(userToken)
XXXX(userName)
Example 2:
+ (MyManager *)sharedManager {
// singleton
...
}
- (void)updateName:(NSString *)name {
self.name = name;
}
+ (void)updateName:(NSString *)name {
return [[self sharedManager] updateName:name];
}
- (void)updateUid:(NSString *)uid {
self.uid = uid;
}
+ (void)updateUid:(NSString *)uid {
return [[self sharedManager] updateUid:uid];
}
I want a way to write them efficiently, too.
What can I do?

how to retain my uitextfield values in viewController when i calling?

I have a main page having 3 textfield in my first view as i navigate to different view and return back to my first view (i.e after i enter all the values i moving to next page).I want my 3 textfield to retain its value when i go back to my main page here my sample code :
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *mobile = MobileNum.text;
[defaults setObject:mobile forKey:self.MobileNum.text];
NSString *amountText = amount.text;
[defaults setObject:amountText forKey:self.amount.text];
[defaults synchronize];
NSString *temp = [defaults objectForKey:self.MobileNum.text];
NSString *temp1 = [defaults objectForKey:self.amount.text];
NSLog(#"%# %#",temp,temp1);
at you viewWillDisappear method store the defaults like.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *mobile = MobileNum.text;
[defaults setObject:mobile forKey:#"mobileNumber"];
NSString *amountText = amount.text;
[defaults setObject:amountText forKey:#"amount"];
[defaults synchronize];
again at your viewWillAppear method retrieve the values like.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([[defaults valueForKey:#"mobileNumber"] length]>0){
MobileNum.text=[defaults valueForKey:#"mobileNumber"];
}
else {
MobileNum.text=#"";
}
if ([[defaults valueForKey:#"amount"] length]>0) {
amount.text=[defaults valueForKey:#"amount"];
}
else {
amount.text=#"";
}
it will work.

save and load uiswitch

I'm trying to make an appointment form on the iPad and I'm having trouble with the UISwitch, I need to save its state and the later load it on another page, I have done this for a text field and a date picker but for some reason it doesn't work for the UISwitch. I am very new to this so any help would be appreciated.
-(IBAction)savedata:(id)sender; {
NSString *savestring = _NameofResident.text;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:savestring forKey:#"savedstring"];
[defaults synchronize];
NSString *savestring1 = _NameofStudent.text;
NSUserDefaults *defaults1 = [NSUserDefaults standardUserDefaults];
[defaults1 setObject:savestring1 forKey:#"savedstring1"];
[defaults synchronize];
NSString *savestring2 = _AppointmentTime.date;
NSUserDefaults *defaults2 = [NSUserDefaults standardUserDefaults];
[defaults2 setObject:savestring2 forKey:#"savedstring2"];
[defaults synchronize];
NSString *savestring3 = _NextAppointmentTime.date;
NSUserDefaults *defaults3 = [NSUserDefaults standardUserDefaults];
[defaults3 setObject:savestring3 forKey:#"savedstring3"];
[defaults synchronize];
NSString *savestring4 = _Confirmed.text;
NSUserDefaults *defaults4 = [NSUserDefaults standardUserDefaults];
[defaults4 setObject:savestring4 forKey:#"savedstring4"];
[defaults synchronize];
}
- (IBAction)loaddata:(id)sender; {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *loadstring = [defaults objectForKey:#"savedstring"];
[_NameofResident setText:loadstring];
NSString *loadstring1 = [defaults objectForKey:#"savedstring1"];
[_NameofStudent setText:loadstring1];
NSString *loadstring2 = [defaults objectForKey:#"savedstring2"];
[_AppointmentTime setDate:loadstring2];
NSString *loadstring3 = [defaults objectForKey:#"savedstring3"];
[_NextAppointmentTime setDate:loadstring3];
NSString *loadstring4 = [defaults objectForKey:#"savedstring4"];
[_Confirmed setText:loadstring4];
}
As you can see I can both load and save the state for the names and times but I don't really know how I can add in a UISwitch to do this.
thanks for your help.
To store the value of a UISwitch state, which is a BOOL, you can do 2 things :
store the BOOL in an NSNumber ([NSNumber numberWithBool:myBool]) and save it with defaults setObject: method. But then, when retrieving the BOOL, you will have to do [defaults objectForKey:#"myKey"].boolValue
store the BOOL itself with defaults setBool:forKey method. And retrieve it with defaults boolForKey method.
Moreover, I've seen you get the defaults many times and synchronize it many times. This is not necessary so I give you an example of what you could have done :
-(IBAction)savedata:(id)sender; {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *savestring = _NameofResident.text;
[defaults setObject:savestring forKey:#"savedstring"];
NSString *savestring1 = _NameofStudent.text;
[defaults setObject:savestring1 forKey:#"savedstring1"];
NSString *savestring2 = _AppointmentTime.date;
[defaults setObject:savestring2 forKey:#"savedstring2"];
NSString *savestring3 = _NextAppointmentTime.date;
[defaults setObject:savestring3 forKey:#"savedstring3"];
NSString *savestring4 = _Confirmed.text;
[defaults setObject:savestring4 forKey:#"savedstring4"];
BOOL savebool5 = _Switch.isOn;
[defaults setBool:savebool5 forKey:#"savedbool5"];
[defaults synchronize];
}
- (IBAction)loaddata:(id)sender; {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *loadstring = [defaults objectForKey:#"savedstring"];
[_NameofResident setText:loadstring];
NSString *loadstring1 = [defaults objectForKey:#"savedstring1"];
[_NameofStudent setText:loadstring1];
NSString *loadstring2 = [defaults objectForKey:#"savedstring2"];
[_AppointmentTime setDate:loadstring2];
NSString *loadstring3 = [defaults objectForKey:#"savedstring3"];
[_NextAppointmentTime setDate:loadstring3];
NSString *loadstring4 = [defaults objectForKey:#"savedstring4"];
[_Confirmed setText:loadstring4];
BOOL loadBool5 = [defaults boolForKey:#"savedbool5"];
[_Switch setOn:loadBool5];
}
You can solve your problem the following way:
//
// ViewController.m
//
#import "ViewController.h"
#interface ViewController ()
#property (weak, nonatomic) IBOutlet UISwitch *mySwitch;
- (IBAction)switchChanged:(id)sender;
#end
#implementation ViewController
- (IBAction)switchChanged:(id)sender
{
[[NSUserDefaults standardUserDefaults] setBool:self.mySwitch.on forKey:#"SwitchState"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.mySwitch.on = [[NSUserDefaults standardUserDefaults] boolForKey:#"SwitchState"];
}
#end
Happy programming !

How to use UISwitch with NSUserDefault

defaults = [NSUserDefaults standardUserDefaults];
NSLog(#"%#",[defaults objectForKey:#"firsttime"])
if([[defaults objectForKey:#"firsttime"]isEqualToString:#"YES"])
{
UISwitch *onoff = (UISwitch *) sender;
if(onoff.on)
{
NSLog(#"yes on1 facebookswitch");
facebookSwitch.on = YES;
[userDefault setValue:#"true" forKey:#"facebooknotify"];
NSLog(#"on");
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
[validate alertCommonWithoutMessage:NSLocalizedString(#"val_message",nil) :NSLocalizedString(#"val_facebook_login",nil) :#"OK"];
facebookSwitch.on = YES;
NSLog(#"yes on2 facebookswitch");
}
else {
NSLog(#"val_facebook_conf");
[validate alertCommonWithoutMessage:NSLocalizedString(#"val_message",nil) :NSLocalizedString(#"val_facebook_conf",nil) :#"OK"];
facebookSwitch.on = NO;
[userDefault setValue:#"false" forKey:#"facebooknotify"];
NSLog(#"yes off1 facebookswitch");
I'm using this method,but sumtimes the response is null.
Try this code:
// add this code in your switch touch event
- (IBAction)YourSwitch:(UISwitch*)sender
{
if (UISwitch.on)
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:true forKey:#"Sound"];
[defaults synchronize];
}
else
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:false forKey:#"Sound"];
[defaults synchronize];
}
}
// add this code in your viewDidload .
BOOL isSound= [[NSUserDefaults standardUserDefaults] objectForKey:#"Sound"];
if (isSound){
_ref_slider.on=TRUE;
} else {
_ref_slider.on=FALSE;
}
i hope this code is useful for you.
As to why it's not working, the most common problem is [userDefault synchronize]
Also, rather than using string boolean values, why not use:
[userDefault setBool:YES forKey:#"facebooknotify"];
and then access by
BOOL notified = [userDefault boolForKey:#"facebooknotify"];

Resources