NSUserdefault и основные данные


Что такое NsUserdefault ? и как его можно использовать для хранения постоянных данных приложения . Пожалуйста, проясните мои сомнения относительно того, когда их использовать и как они могут быть полезны с точки зрения производительности ?

4 2

4 ответа:

С помощью класса NSUserDefaults можно сохранять настройки и свойства, относящиеся к данным приложения или пользователя.
Например, можно сохранить изображение профиля, заданное пользователем, или цветовую схему приложения по умолчанию. Объекты будут сохранены в том, что известно как iOS “defaults system”. Система iOS defaults доступна во всем коде вашего приложения, и любые данные, сохраненные в системе defaults, сохраняются в сеансах приложения. Это означает, что даже если пользователь закроет ваше приложение или перезагрузите свой телефон, сохраненные данные все равно будут доступны при следующем открытии приложения.

Производительность

Класс NSUserDefaults кэширует значения внутри, поэтому поиск выполняется очень быстро. Накладные расходы [NSUserDefaults standardUserDefaults] по отношению к переменной экземпляра настолько малы, что вы даже не заметите этого, если сделаете это 5 миллионов раз в своем коде.

КлассNSUserDefaults действует очень похоже на то, что называется списком свойств (он же plist). Плисты ограничены в том, какие объекты они могут хранить. Плисты могут хранить шесть типов:

  1. NSData
  2. NSString
  3. NSNumber
  4. NSDate
  5. NSArray
  6. NSDictionary

Использование: NSUserDefaults используется для хранения значений, которые принадлежат настройкам пользователей и должны быть сохранены, даже если приложение убито и снова запущен. Сказав, что, как указано в другом ответе, мы должны помещать только легкие взвешенные объекты в NSUserDefaults.

Для других тяжелых wight сохранить и перезагрузить файловую систему пользователя. Для вещей, которые включают поиск по сохраненным данным, используйте основные данные.

Писать В NSUserDefaults:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("Your Object", forKey: "yourKey")

Чтение из NSUserDefaults:

let defaults = NSUserDefaults.standardUserDefaults()

if let value = defaults.stringForKey("yourKey")
{
    print(value)
}

Другие Полезные Методы Удобства:

func setBool(value: Bool, forKey defaultName: String)
func setInteger(value: Int, forKey defaultName: String)
func setFloat(value: Float, forKey defaultName: String)
func setDouble(value: Double, forKey defaultName: String)
func setObject(value: AnyObject?, forKey defaultName: String)
func setURL(url: NSURL, forKey defaultName: String)

Размер Хранилища:

До тех пор, пока есть достаточно места на iPhone / iPad, вы можете хранить значения NSUserDefault. Все эти значения хранятся в a .plist файл, и этот файл очень мал, большую часть времени под 1 Кб. Но держите это как можно более легким.

Это фрагмент кода, который я сделал в качестве демонстрационного использования NSDefaultUser .

Для сохранения данных
NSString * name = _tf_name.текст; NSString * email = _tf_email.текст; int age = [[_tf_age text] integerValue];

// Create Instance of NSUserDefaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

// Set the object and YOU name the key, we are defining the key here
[defaults setObject:name forKey:@"firstName"];
[defaults setObject:email forKey:@"email"];
[defaults setInteger:age forKey:@"age"];

// Call Sync to Save Objects
[defaults synchronize];

/ / Загрузить Данные

// Get Saved Objects
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *name = [defaults objectForKey:@"firstName"];
NSString *email = [defaults objectForKey:@"email"];
int age = [defaults integerForKey:@"age"];
NSString *ageString = [NSString stringWithFormat:@"%i", age];

// Load UI
_tf_name.text = name;
_tf_email.text = email;
_tf_age.text = ageString;

NSUserDefaults используются для сохранения очень легких данных, где, как и другие подходы, хорошо хранить большие объемы данных, с которыми работает приложение.

NSUserDefaults делает это невероятно легко, так как вам не нужно беспокоиться о файлах, сущностях, выборках,.... Все это делается в одну линию.