Save string to the NSUserDefaults?

2018-12-31 23:30发布

问题:

How to save a string into the NSUserDefaults?

回答1:

NSString *valueToSave = @\"someValue\";
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@\"preferenceName\"];
[[NSUserDefaults standardUserDefaults] synchronize];

to get it back later

NSString *savedValue = [[NSUserDefaults standardUserDefaults]
    stringForKey:@\"preferenceName\"];


回答2:

more precisely

-(void)saveToUserDefaults:(NSString*)myString
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    if (standardUserDefaults) {
        [standardUserDefaults setObject:myString forKey:@\"timestamps\"];
        [standardUserDefaults synchronize];
    }
}


回答3:

Here\'s how to do the same with Swift;

var valueToSave = \"someValue\"
NSUserDefaults.standardUserDefaults().setObject(valueToSave, forKey: \"preferenceName\")

To get it back later;

if let savedValue = NSUserDefaults.standardUserDefaults().stringForKey(\"preferenceName\") {
    // Do something with savedValue
}

In Swift 3.0

var valueToSave = \"someValue\"
UserDefaults.standard.set(valueToSave, forKey: \"preferenceName\")

if let savedValue = UserDefaults.standard.string(forKey: \"preferenceName\") {

}


回答4:

Something like this:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSString
[prefs setObject:@\"TextToSave\" forKey:@\"keyToLookupString\"];

Then to retrieve:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// getting an NSString
NSString *myString = [prefs stringForKey:@\"keyToLookupString\"];

You should really check out Apple\'s NSUserDefaults Class Reference and also maybe this tutorial: iPhone Programming Tutorial – Saving/Retrieving Data Using NSUserDefaults



回答5:

Do not forget this statement because otherwise it may not always work:

[standardUserDefaults synchronize];


回答6:

[[NSUserDefaults standardUserDefaults] setValue:aString forKey:aKey]



回答7:

A good practice is also to use a constant for the key to avoid bugs where you do not store and read with the same key

NSString* const TIME_STAMPS_KEY = @\"TIME_STAMPS_KEY\";


回答8:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSString
[prefs setObject:@\"TextToSave\" forKey:@\"keyToLookupString\"];

// saving an NSInteger
[prefs setInteger:42 forKey:@\"integerKey\"];

// saving a Double
[prefs setDouble:3.1415 forKey:@\"doubleKey\"];

// saving a Float
[prefs setFloat:1.2345678 forKey:@\"floatKey\"];

// This is suggested to synch prefs, but is not needed (I didn\'t put it in my tut)
[prefs synchronize];

Retrieving

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// getting an NSString
NSString *myString = [prefs stringForKey:@\"keyToLookupString\"];

// getting an NSInteger
NSInteger myInt = [prefs integerForKey:@\"integerKey\"];

// getting an Float
float myFloat = [prefs floatForKey:@\"floatKey\"];


回答9:

-(void)saveToUserDefaults:(NSString*)string_to_store keys:(NSString *)key_for_the_String
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    if (standardUserDefaults) {
        [standardUserDefaults setObject:string_to_store forKey:key_for_the_String];
        [standardUserDefaults synchronize];
    }
}

And call it by:

[self saveToUserDefaults:@\"string_to_store\" : @\"key_for_the_string\"];

Retrieve the string by using:

NSString * stored_string = [[NSUserDefaults standardUserDefaults] stringforkey:key_for_the_String]


回答10:

FirstView

    {
    NSMutableArray *array; }
- (void)viewDidLoad {
    [super viewDidLoad];
    array = [[NSMutableArray alloc]init];
    array = [[NSUserDefaults  standardUserDefaults]objectForKey:@\"userlist\"];

     NSLog(@\"%lu\",(unsigned long)array.count);
    if (array>0)
    {
        for (int i=0; i<array.count; i++)
        {
            NSDictionary *dict1 = @{@\"Username\":[[array valueForKey:@\"Username\"] objectAtIndex:i],@\"Mobilenumber\":[[array valueForKey:@\"Mobilenumber\"] objectAtIndex:i],@\"Firstname\":[[array valueForKey:@\"Firstname\"] objectAtIndex:i],@\"Lastname\":[[array valueForKey:@\"Lastname\"] objectAtIndex:i],@\"dob\":[[array valueForKey:@\"dob\"] objectAtIndex:i],@\"image\":[[array valueForKey:@\"image\"] objectAtIndex:i]};
            NSLog(@\"%@\",dict1);
            NSArray *array1 = [[NSArray alloc]initWithObjects:dict1, nil];
            [[NSUserDefaults standardUserDefaults] setObject:array1 forKey:@\"UserList\"];
        }

    }
     }

ImagePicker

     - (void)imagePickerController:(UIImagePickerController *)picker         didFinishPickingMediaWithInfo:(NSDictionary *)info {

    UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
    self.imaGe.image = chosenImage;

    [picker dismissViewControllerAnimated:YES completion:NULL];
     }
  • (IBAction)submitBton:(id)sender {

    NSMutableArray *array2 = [[NSMutableArray alloc]initWithArray: 
    [[NSUserDefaults standardUserDefaults]objectForKey:     
        @\"userlist\"]];                                
    
    UIImage *ima = _imaGe.image;
    NSData *imagedata = UIImageJPEGRepresentation(ima,100);
    
    NSDictionary *dict =  @{@\"Username\":_userTxt.text,@\"Lastname\":_lastTxt.text,@\"Firstname\":_firstTxt.text,@\"Mobilenumber\":_mobTxt.text,@\"dob\":_dobTxt.text,@\"image\":imagedata};
    
       [array2 addObject:dict];
      [[NSUserDefaults standardUserDefaults]setObject:array2    
      forKey:@\"userlist\"];
       NSLog(@\"%@\",array2);
    
      [self performSegueWithIdentifier:@\"second\" sender:self];
    
     }
    
    • (IBAction)chooseImg:(id)sender {

      UIImagePickerController *picker = [[UIImagePickerController
      alloc] init]; picker.delegate = self; picker.allowsEditing = YES; picker.sourceType =
      UIImagePickerControllerSourceTypePhotoLibrary; [self presentViewController:picker animated:YES completion:NULL];

      }


second View { NSMutableArray *arr; }

- (void)viewDidLoad {
    [super viewDidLoad];

     arr =[[NSMutableArray alloc]init];
    arr = [[NSUserDefaults standardUserDefaults]objectForKey:@\"userlist\"]; }

#pragma mark- TableView DataSource

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1; }

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return arr.count; }

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellId = @\"tablecell\";
    TableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:cellId];
    cell.userLbl.text =[[arr valueForKey:@\"username\"] objectAtIndex:indexPath.row];
    cell.ageLbl.text =[[arr valueForKey:@\"dob\"] objectAtIndex:indexPath.row];
    cell.profileImg.image =[UIImage imageNamed:[[arr valueForKey:@\"image\"] objectAtIndex:indexPath.row]];
    return cell; }


回答11:

In Swift 4.0.3 Xcode 9

============set  Data in UserDefaults =========

  UserDefaults.standard.set(userName, forKey: \"userName\")
  UserDefaults.standard.synchronize()

============Get Data in UserDefaults =========

  let userName = UserDefaults.standard.string(forKey: \"userName\")
  print(userName ?? \"Gera\")

  userNameTextField.text = \"\"+userName!


回答12:

For saving use this :

[[NSUserDefaults standardUserDefaults]setObject:@\"YES\" forKey:@\"KTerminated\"];
[[NSUserDefaults standardUserDefaults]synchronize];

For Retriveing use this :

[[[NSUserDefaults standardUserDefaults]stringForKey:@\"KTerminated\"] isEqualToString:@\"YES\"];


回答13:

Here For Swift i create two function which call for save and retrive value for key from Preference

may be this is help full for u

// for saving object

static func setObject(value:AnyObject ,key:String)
{
    let pref = NSUserDefaults.standardUserDefaults()
    pref.setObject(value, forKey: key)
    pref.synchronize()
}

static func getObject(key:String) -> AnyObject
{
    let pref = NSUserDefaults.standardUserDefaults()
    return pref.objectForKey(key)!
}


回答14:

update for Swift 3

func setObject(value:AnyObject ,key:String)
{
    let pref = UserDefaults.standard
    pref.set(value, forKey: key)
    pref.synchronize()
}

func getObject(key:String) -> AnyObject
{
    let pref = UserDefaults.standard
    return pref.object(forKey: key)! as AnyObject
}


回答15:

In Swift4.2 and Xcode 10

//Save
UserDefaults.standard.set(true, forKey: \"Key1\") //Bool
UserDefaults.standard.set(1, forKey: \"Key2\")  //Integer
UserDefaults.standard.set(\"This is my string\", forKey: \"Key3\") //String
UserDefaults.standard.synchronize()

//Retrive
UserDefaults.standard.bool(forKey: \"Key1\")
UserDefaults.standard.integer(forKey: \"Key2\")
UserDefaults.standard.string(forKey: \"Key3\")

//Remove
UserDefaults.standard.removeObject(forKey: \"Key3\")