2010-06-19 77 views
205

如何将字符串保存到NSUserDefaults将字符串保存到NSUserDefaults?

+0

试试这个:http://jayprakashdubey.blogspot.in/2014/07/nsuserdefault-usage.html – 2014-07-30 10:26:40

+3

如果您正在寻找斯威夫特,然后我加入了一个答案。 – 2015-04-25 15:51:26

回答

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

把它找回来以后

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

有没有什么方法可以在特定的日期保存这个字符串?谢谢,但你的代码和我的代码一样,我创建了一个自定义的日历应用程序,用户可以在其中写入他们的笔记,例如在2月3日用户写东西,这个文本应该保存在2月3日,当用户移动到另一个他/她可以在当天日期前写下其他日期 – 2012-02-02 22:00:00

+6

由于某种原因,在我调用同步方法之前,保存部分无法正常工作。 'NSString * valueToSave = @“someValue”; [[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@“preferenceName”]; [[NSUserDefaults standardUserDefaults] synchronize' – 2014-02-24 02:07:28

+0

这是完美的工作 – imjaydeep 2016-01-09 16:07:06

6

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

48

更精确地

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

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

没有必要对'standardUserDefaults'对象执行无检查。在Objective-C中将消息发送到零是完全正确的。 – jbrennan 2010-06-19 06:29:38

+0

够公平的...... – 2010-06-19 07:22:43

+12

但更重要的是,他包含了“同步” - 如果你不这样称呼,NSUserDefaults是非常不稳定的! – PostCodeism 2010-11-29 19:48:05

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

你真的应该看看苹果的NSUserDefaults的类参考,也可能这个教程:iPhone Programming Tutorial – Saving/Retrieving Data Using NSUserDefaults

12

不要忘了这个说法,因为否则可能并不总是工作:

[standardUserDefaults synchronize]; 
5

一个不错的做法是使用一个常量作为密钥,以避免在没有使用相同密钥存储和读取的情况下发生错误

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

检索

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

这里是如何做相同的雨燕;

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

} 
+0

谢谢你,因为原来的问题很快,+1 – 2016-06-23 09:04:07

+0

午餐后,我对我的玩世不恭探测器有问题。原来的问题在2010年被问到了。因此,我认为Swift是今天走的路。 – 2017-02-15 13:21:27

1
​​

并通过调用它:

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

通过检索字符串:

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

为了节约使用本:

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

对于Retriveing使用:

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

这里对于斯威夫特我创建两个功能,要求保存和优先重点retrive值

可能这是帮助全为ü

//用于保存对象

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)发送方{

    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)发送方{

      的UIImagePickerController *挑选器= [[的UIImagePickerController
      的alloc] INIT]; picker.delegate = self; picker.allowsEditing = YES; picker.sourceType =
      UIImagePickerControllerSourceTypePhotoLibrary; [自presentViewController:拾取器动画:是完成:NULL];

      }


第二查看 { 的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; } 
+0

需要适当的编辑 – Yatin 2017-01-09 08:26:10

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!