2010-06-19 19 views
205

Come salvare una stringa in NSUserDefaults?Salva stringa in NSUserDefaults?

+0

Prova questo: http://jayprakashdubey.blogspot.in/2014/07/nsuserdefault-usage.html –

+3

Se siete alla ricerca di Swift, poi ho aggiunto una risposta. –

risposta

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

per tornare indietro dopo

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

C'è un modo per salvare questa stringa di base in una data specifica? grazie ma il tuo codice funziona come il mio, creo un'app personalizzata per il calendario in cui l'utente può scrivere le proprie note, ad esempio in 3 febbraio l'utente scrive qualcosa e questo testo deve essere salvato in 3 feb e quando l'utente si sposta nell'altro giorni lui/lei potrebbe scrivere qualcos'altro che si accumula per giorno giorno –

+6

Per qualche motivo la parte di salvataggio non ha funzionato correttamente fino a quando ho chiamato il metodo di sincronizzazione. 'NSString * valueToSave = @" someValue "; [[NSUserDefaults standardUserDefaults] setObject: valueToSave forKey: @" preferenceName "]; [[NSUserDefaults standardUserDefaults] synchronize' –

+0

Questo funziona perfettamente – imjaydeep

6

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

48

più precisamente

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

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

Non è necessario eseguire il controllo nullo per l'oggetto 'standardUserDefaults'. È perfettamente corretto inviare messaggi a zero in Objective-C. – jbrennan

+0

equo abbastanza ... –

+12

Ma soprattutto ha incluso "sincronizzare" - NSUserDefaults è molto irregolare se non si chiama questo! – PostCodeism

12

Qualcosa di simile a questo:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

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

Poi per recuperare:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

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

Si dovrebbe verificare NSUserDefaults di riferimento alla classe di Apple e anche forse questo tutorial: iPhone Programming Tutorial – Saving/Retrieving Data Using NSUserDefaults

12

Non dimenticare questa affermazione perché altrimenti non può sempre funzionare:

[standardUserDefaults synchronize]; 
5

Una buona pratica è anche quella di usare una costante per la chiave per evitare bug dove non si memorizzano e si leggono con la stessa chiave

NSString* const TIME_STAMPS_KEY = @"TIME_STAMPS_KEY"; 
5
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]; 

Recupero

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

Ecco come fare la stessa cosa con Swift;

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

Per riprenderlo dopo;

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

} 
+0

Grazie, dato che la domanda iniziale era rapida, +1 –

+0

Ho problemi con il mio rilevatore di cinismo dopo pranzo. La domanda originale è stata posta nel 2010. Ho quindi revocato l'opinione perché Swift è la strada da percorrere oggi. –

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

e lo chiamano da:

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

recuperare la stringa utilizzando:

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

Per salvare l'uso questo:

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

Per Retriveing ​​utilizzare questo:

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

Qui Per Swift creo due funzioni che richiedono per salvare e retrive il valore per la chiave da Preferenze

può essere questo è aiutare pieno per u

// per il salvataggio oggetto

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)! 
} 
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]; 
    } 
  • (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; [autopresenteViewController: selettore animato: SÌ completamento: NULL];

      }


seconda vista { NSMutableArray * arr; } Aggiornamento

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

Hai bisogno di una modifica adatta – Yatin

0

per 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 
} 
0

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!