2015-09-30 4 views
2

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

+0

Следуйте за этим - http://www.icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/ –

ответ

7

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

Performance

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

1

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

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

3

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

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

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

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

Запись Для 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. Все эти значения хранятся в файле .plist, и этот файл очень мал, большую часть времени менее 1 кб. Но держите это как можно более легким.

+0

abhinav У меня есть одно сомнение в nsuserdefault. Каковы максимальные данные/размер, который мы можем хранить. –

+0

См. Мое обновленное сообщение. @ Anbu.Karthik – Abhinav

2

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

для сохранения данных
NSString * name = _tf_name.text; NSString * email = _tf_email.text; 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; 
Смежные вопросы