2012-01-19 4 views
0

Я очень новичок в управлении памятью, и у меня есть вопрос относительно сохранения даты выбора даты. Это код, который я использую, чтобы сохранить текст: введенногоiOS: Сохранение настроек выбора даты

NSString *filePath = [self dataFilePath]; 
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { 
    NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath]; 
    event1Field.text = [array objectAtIndex:0]; 
    event2Field.text = [array objectAtIndex:1]; 
} 

Как бы я изменить это, чтобы сохранить дату сборщиков датировать, а не введенный текст? И как мне изменить метод viewDidLoad? Я обычно просто ввести данные сборщика в там, как это:

- (void)viewDidLoad { 
    NSDate *now = [NSDate date]; 
    [datePicker setDate:now animated:YES]; 
} 

Но я не знаю, как я бы идти о загрузке его в это сохраненное состояние. Извините, если это глупые вопросы, я все еще довольно новый и учился, когда я ухожу.

Спасибо!

ответ

3

Самый простой способ сохранения данных - использовать NSUserDefaults, который предоставляется базой Foundation. Это в основном просто хранилище ключей, которое позволяет вам сохранять небольшие объемы данных.

В первую очередь, сохранение данных от выбора даты выглядит что-то похожее на это:

// NSUserDefaults is a singleton instance and access to the store is provided 
// by the class method, +standardUserDefaults 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

// Let's pull the date out of our picker 
NSDate *selectedDate = [self.datePicker date]; 

// Store the date object into the user defaults. The key argument expects a 
// string and should be unique. I usually prepend any key with the name 
// of the class it's being used in. 
// Savvy programmers would pull this string out into a constant so that 
// it could be accessed from other classes if necessary. 
[defaults setObject:selectedDate forKey:@"DatePickerViewController.selectedDate"]; 

Теперь, когда мы хотим, чтобы вытащить эти данные обратно и заполнить нашу дату сборщика, мы могли бы сделать что-то вроде следующего ...

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Get the date. We're going to use a little shorthand instead of creating 
    // a variable for the instance of `NSUserDefaults`. 
    NSDate *storedDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"DatePickerViewController.selectedDate"]; 

    // Set the date on the date picker. We're passing `NO` to `animated:` 
    // because we're performing this before the view is on screen, but after 
    // it has been loaded. 
    [self.datePicker setDate:storedDate animated:NO]; 
} 
+0

[Здесь] (http://mobile.tutsplus.com/tutorials/iphone/nsuserdefaults_iphone-sdk/) 'са хороший визуальный учебник для [ 'NSUserDefaults'] (Http: // разработчик. apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html). – darvids0n

+0

Удивительно, большое спасибо! Еще один вопрос: где я должен поместить первый блок кода для NSUserDefaults в методе viewDidLoad? – John

+1

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

Смежные вопросы