поведение NSUserDefaults как файла с двумя списками?

#iphone

#iPhone

Вопрос:

В файле UserDefault у меня есть шесть полей. Я хочу всегда сохранять два поля и сбрасывать четыре других поля в каком-то сценарии. Каков наилучший подход к решению этой проблемы?

Ответ №1:

Если вы хотите, чтобы четыре поля были сброшены со значениями по умолчанию.

И значением по умолчанию может быть empty string ,

  #define KDefault @"" 
 NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
 if (standardUserDefaults)
 {
        [standardUserDefaults setObject:KDefault forKey:@"first"];
        [standardUserDefaults setObject:KDefault forKey:@"two"];
        [standardUserDefaults setObject:KDefault forKey:@"third"];
        [standardUserDefaults setObject:KDefault forKey:@"four"];
        [standardUserDefaults synchronize];
 }
  

Отредактировано:
Для удаления поля вместо сброса: используйте следующее

         [standardUserDefaults removeObjectForKey:@"first"];
        [standardUserDefaults removeObjectForKey:@"two"];
        [standardUserDefaults removeObjectForKey:@"third"];
        [standardUserDefaults removeObjectForKey:@"four"];
        [standardUserDefaults synchronize];
  

Комментарии:

1. @jhaliya- спасибо за ответ, есть ли какой-нибудь способ удалить четыре поля вместо сброса???

Ответ №2:

.вы можете использовать NSFileManager ..пример кода

     NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //1
NSString *documentsDirectory = [paths objectAtIndex:0]; //2
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"user.plist"]; //3
NSFileManager *fileManager = [NSFileManager defaultManager];

if (![fileManager fileExistsAtPath: path]) //4
{
    NSString *bundle = [[NSBundle mainBundle] pathForResource:@"user" ofType:@"plist"]; //5

    [fileManager copyItemAtPath:bundle toPath: path error:amp;error]; //6
}

NSMutableDictionary *savedStock = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
//load from savedStock example int value
NSString* userName;
NSString* password;
NSString* pin;
userName = [savedStock objectForKey:@"name"];
password = [savedStock objectForKey:@"password"];

if([userName isEqualToString:@"some"] amp;amp; [userName isEqualToString:@"some"] amp;amp; [pin isEqualToString:@"some"])
{
    [self setAdd];
}
else 
{
    [self pinAdd];
}