OBJ. C. (XCODE 5 - IOS 7) Автосохранение переменных в списке свойств

Я хочу автоматически сохранить мои переменные (с плавающей точкой) в списке свойств, который я уже создал. Я могу сделать это с помощью кнопки, это хорошо работает, но я хочу сделать это автоматически с IOS 7 (некоторые методы не рекомендуются в IOS 6 или 7).

replyToApplicationShouldTerminate 

не работает...

Я сохраняю в списке свойств такую ​​кнопку:

-(IBAction)apply:(id)sender
{
  {

    [nameC1 resignFirstResponder];
    [nameC2 resignFirstResponder];
    [nameC3 resignFirstResponder];
    [nameC4 resignFirstResponder];
    [nameC5 resignFirstResponder];


    nom1 = [nameC1 text];
    nom2 = [nameC2 text];
    nom3 = [nameC3 text];
    nom4 = [nameC4 text];
    nom5 = [nameC5 text];

    v1 = [NSString stringWithFormat:@"%d", compteur1];
    v2 = [NSString stringWithFormat:@"%d", compteur2];
    v3 = [NSString stringWithFormat:@"%d", compteur3];
    v4 = [NSString stringWithFormat:@"%d", compteur4];
    v5 = [NSString stringWithFormat:@"%d", compteur5];



    //Write in Data.plist
    NSString *error;
    NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *plistPath = [rootPath stringByAppendingPathComponent:@"Data.plist"];
    NSDictionary *plistDict = [NSDictionary dictionaryWithObjects:
                               [NSArray arrayWithObjects: nom1, nom2, nom3, nom4, nom5, v1, v2, v3, v4, v5, nil] forKeys:[NSArray arrayWithObjects: @"nomCompteur1", @"nomCompteur2", @"nomCompteur3", @"nomCompteur4", @"nomCompteur5", @"valeurCompteur1", @"valeurCompteur2", @"valeurCompteur3", @"valeurCompteur4", @"valeurCompteur5",nil]];
    NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict
                                                                   format:NSPropertyListXMLFormat_v1_0
                                                         errorDescription:&error];
    if(plistData) {
        [plistData writeToFile:plistPath atomically:YES];
    }
    else {
        NSLog(@"error");
        //[error release];
    }


 }

}

1 ответ

Решение

После загрузки пера зарегистрируйте уведомление об изменениях значений в каждом из ваших текстовых полей:

- (void)awakeFromNib
{
  [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(UITextFieldTextDidChange:)
                                             name:UITextFieldTextDidChangeNotification
                                           object:nameC1];
  [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(UITextFieldTextDidChange:)
                                             name:UITextFieldTextDidChangeNotification
                                           object:nameC2];
  ...
}

И когда текст изменится, сохраните данные:

- (void)UITextFieldTextDidChange:(NSNotification*)notification
{
  [self save];
}

- (void)save
{
   ...
}

Вы можете хотеть стать немного более модным, и использовать dispatch_after() подождать ~0,5 секунды перед сохранением. Таким образом, пользователь не заметит, если сохранение будет немного медленным. Но я подозреваю, что в этом случае сохранение будет очень быстрым.

Другие вопросы по тегам