Сохранить строку в NSUserDefaults? - PullRequest
217 голосов
/ 19 июня 2010

Как сохранить строку в NSUserDefaults?

Ответы [ 15 ]

437 голосов
/ 19 июня 2010
NSString *valueToSave = @"someValue";
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"preferenceName"];
[[NSUserDefaults standardUserDefaults] synchronize];

чтобы получить его позже

NSString *savedValue = [[NSUserDefaults standardUserDefaults]
    stringForKey:@"preferenceName"];
49 голосов
/ 19 июня 2010

точнее

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

    if (standardUserDefaults) {
        [standardUserDefaults setObject:myString forKey:@"timestamps"];
        [standardUserDefaults synchronize];
    }
}
31 голосов
/ 25 апреля 2015

Вот как сделать то же самое со Swift;

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

Чтобы вернуть его позже;

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

В Swift 3.0

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

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

}
12 голосов
/ 05 марта 2013

Не забывайте это утверждение, потому что иначе оно может не всегда работать:

12 голосов
/ 19 июня 2010

Примерно так:

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

6 голосов
/ 26 февраля 2015
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"];
6 голосов
/ 19 июня 2010

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

5 голосов
/ 12 августа 2013

Хорошей практикой также является использование константы для ключа, чтобы избежать ошибок, когда вы не храните и не читаете с одним и тем же ключом

NSString* const TIME_STAMPS_KEY = @"TIME_STAMPS_KEY";
1 голос
/ 12 октября 2018

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

Примечание: Сохранение текстовых данных (означает String, Array, Dictionary и т. Д.) В пользовательских значениях Не сохраняйте изображения в UserDefaults, это не рекомендуется (Сохраняйте изображения в локальном каталоге).

1 голос
/ 09 января 2018

В 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!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...