#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];
}