将字符串保存到NSUserDefaults?

isc*_*ers 220 cocoa-touch nsuserdefaults ios

如何将字符串保存到NSUserDefaults

dra*_*ard 444

NSString *valueToSave = @"someValue";
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"preferenceName"];
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)

以后再拿回来

NSString *savedValue = [[NSUserDefaults standardUserDefaults]
    stringForKey:@"preferenceName"];
Run Code Online (Sandbox Code Playgroud)

  • 出于某种原因,在我调用同步方法之前,保存部分无法正常工作.`NSString*valueToSave = @"someValue"; [[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"preferenceName"]; [[NSUserDefaults standardUserDefaults] synchronize` (6认同)
  • [[NSUserDefaults standardUserDefaults] synchronize]; 正在被弃用 (4认同)

Mih*_*hta 49

更确切地说

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

    if (standardUserDefaults) {
        [standardUserDefaults setObject:myString forKey:@"timestamps"];
        [standardUserDefaults synchronize];
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 但更重要的是,他包括"同步" - 如果你不打电话,NSUserDefaults非常不稳定! (12认同)
  • 无需对`standardUserDefaults`对象执行nil检查.在Objective-C中将消息发送到nil是完全正常的. (11认同)

Ε Г*_*И О 31

以下是Swift的相同操作方法;

var valueToSave = "someValue"
NSUserDefaults.standardUserDefaults().setObject(valueToSave, forKey: "preferenceName")
Run Code Online (Sandbox Code Playgroud)

以后再回来;

if let savedValue = NSUserDefaults.standardUserDefaults().stringForKey("preferenceName") {
    // Do something with savedValue
}
Run Code Online (Sandbox Code Playgroud)

在Swift 3.0中

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

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

}
Run Code Online (Sandbox Code Playgroud)


v01*_*01d 12

像这样的东西:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSString
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"];
Run Code Online (Sandbox Code Playgroud)

然后检索:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// getting an NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];
Run Code Online (Sandbox Code Playgroud)

您应该查看Apple的NSUserDefaults类参考,​​也可以查看本教程:iPhone编程教程 - 使用NSUserDefaults保存/检索数据


小智 12

不要忘记这句话,否则它可能并不总是有效:

[standardUserDefaults synchronize];
Run Code Online (Sandbox Code Playgroud)


Rav*_*ash 6

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


小智 6

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];
Run Code Online (Sandbox Code Playgroud)

检索

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"];
Run Code Online (Sandbox Code Playgroud)


Sun*_*kas 5

一个好的做法是使用密钥的常量来避免不使用相同密钥存储和读取的错误

NSString* const TIME_STAMPS_KEY = @"TIME_STAMPS_KEY";
Run Code Online (Sandbox Code Playgroud)