NSUserDefaults में स्ट्रिंग सहेजें?


224

कैसे में एक स्ट्रिंग को बचाने के लिए NSUserDefaults?



3
यदि आप स्विफ्ट की तलाश कर रहे हैं, तो मैंने एक उत्तर जोड़ा है।
15 Г И О И О

जवाबों:


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

बाद में वापस पाने के लिए

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

1
क्या विशिष्ट तिथि पर इस स्ट्रिंग आधार को बचाने का कोई तरीका है? धन्यवाद, लेकिन आपका कोड मेरे जैसा ही काम करता है, मैं एक कस्टम कैलेंडर ऐप बनाता हूं जो उपयोगकर्ता इसमें अपने नोट्स लिख सकता है, उदाहरण के लिए 3 फरवरी में उपयोगकर्ता कुछ लिखता है और इस पाठ को 3 फरवरी में सहेजा जाना चाहिए, और जब उपयोगकर्ता दूसरे पर जाता है वह दिन / दिन कुछ और लिख सकते थे, दिन की तारीख को समाप्त करने के लिए
McLover

6
किसी कारण से सेविंग पार्ट ठीक से काम नहीं करता था जब तक कि मैं सिंक्रोनाइज़ विधि नहीं कहलाता। NSString *valueToSave = @"someValue";[[NSUserDefaults standardUserDefaults]setObject:valueToSave forKey:@"preferenceName"]; [[NSUserDefaults standardUserDefaults]synchronize
fs_tigre

5
[[NSUserDefaults standardUserDefaults] सिंक्रनाइज़ करें]; पदावनत हो रही है
जुआन बोइरो

49

ज्यादा ठीक

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

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

11
standardUserDefaultsऑब्जेक्ट के लिए नील जांच करने की आवश्यकता नहीं है । ऑब्जेक्टिव-सी में संदेश भेजना पूरी तरह से ठीक है।
jbrennan

12
लेकिन इससे भी महत्वपूर्ण बात यह है कि वह "सिंक्रोनाइज़ करें" - NSUserDefaults बहुत अनिश्चित है यदि आप इसे नहीं कहते हैं!
पोस्टकोडिज़्म

1
StandardUserDefaults मेरे लिए कुछ अजीब बग्स को निर्धारित करता है, धन्यवाद!
स्कॉट Roepnack 18

1
संदर्भ synchronizeविधि के बारे में बात करता है: "इस पद्धति का उपयोग केवल तभी करें जब आप स्वचालित सिंक्रनाइज़ेशन की प्रतीक्षा नहीं कर सकते हैं (उदाहरण के लिए, यदि आपका आवेदन बाहर निकलने वाला है)" - NSUserDefaults कक्षा संदर्भ
eliocs

@jbrennan जबकि आपकी टिप्पणी तकनीकी रूप से सही है, यह उत्तर उस स्थिति में सहायक है जब आप कुछ महत्वपूर्ण लिख रहे हों और यह सुनिश्चित करना चाहते हैं कि यह सफलतापूर्वक बच गया हो। इसके अलावा, उस संबंध में, वापसी के मूल्य का परीक्षण (उपेक्षा के बजाय) करना अच्छा होगा synchronize। डॉक्टर कहते हैं: हाँ अगर डेटा को डिस्क पर सफलतापूर्वक सहेजा गया था, अन्यथा नहीं।
बासिल बॉर्क

31

यहां स्विफ्ट के साथ ऐसा ही करने का तरीका बताया गया है;

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

बाद में वापस पाने के लिए;

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

स्विफ्ट 3.0 में

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

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

}

धन्यवाद, चूंकि मूल प्रश्न स्विफ्ट के लिए था, +1
अक्षां ठाकुर

मैं दोपहर के भोजन के बाद अपने निंदक डिटेक्टर से परेशान हूं। मूल प्रश्न 2010 में पूछा गया था। इसलिए मैंने इसे आगे बढ़ाया क्योंकि स्विफ्ट आज जाने का रास्ता है।
रॉय फॉक

12

कुछ इस तरह:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

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

फिर पुनः प्राप्त करने के लिए:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

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

आपको वास्तव में Apple के NSUserDefaults क्लास संदर्भ की जांच करनी चाहिए और शायद यह ट्यूटोरियल: iPhone प्रोग्रामिंग ट्यूटोरियल - NSUserDefaults का उपयोग करके डेटा को सहेजना / पुनः प्राप्त करना।



7
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];

पुनः प्राप्त करना

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"];


5

एक अच्छा अभ्यास यह भी है कि आप उन कीड़ों से बचने के लिए एक कुंजी का उपयोग करें जहाँ आप स्टोर नहीं करते हैं और उसी कुंजी के साथ पढ़ते हैं

NSString* const TIME_STAMPS_KEY = @"TIME_STAMPS_KEY";

1
-(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];
    }
}

और इसे कॉल करें:

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

स्ट्रिंग का उपयोग करके पुनः प्राप्त करें:

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

1

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];
     }
  • (आईबीए) सबमिट करेंबटन: (आईडी) प्रेषक {

    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];
    
     }
    • (आईबीएक्शन) selectImg: (आईडी) प्रेषक {

      UIImagePickerController * picker = [[UIImagePickerController
      आबंटित] init]; picker.delegate = self; picker.allowsEditing = YES; picker.sourceType =
      UIImagePickerControllerSourceTypePhotoLibrary; [स्व presentViewController: पिकर एनिमेटेड: हाँ पूरा: NULL];

      }


दूसरा दृश्य {NSMutableArray * गिरफ्तार; }

- (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; }

1

में Swift5 और Xcode 10.2

//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")

नोट: उपयोगकर्ता डेटा में टेक्स्ट डेटा (स्ट्रिंग, एरे, डिक्शनरी आदि) को सेव करें। UserDefaults में चित्र न सहेजें, यह अनुशंसित नहीं है (स्थानीय निर्देशिका में चित्र सहेजें)।


0

इस उपयोग को बचाने के लिए:

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

इसका उपयोग करने के लिए:

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

0

यहाँ स्विफ्ट के लिए मैं दो फंक्शन बनाता हूँ जो सेव करने के लिए कॉल करते हैं और पसंद के लिए वैल्यू फॉर रिट्राइव करते हैं

यह हो सकता है कि यह यू के लिए पूरी मदद करे

// बचत वस्तु के लिए

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)!
}

0

स्विफ्ट 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
}

0

स्विफ्ट 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!
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.