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 секунды перед сохранением. Таким образом, пользователь не заметит, если сохранение будет немного медленным. Но я подозреваю, что в этом случае сохранение будет очень быстрым.