NSUserDefaults — сохранение основных настроек

#iphone #objective-c #ios

#iPhone #objective-c #iOS

Вопрос:

У меня есть приложение FlipView. В FlipView я сохраняю настройки для MainView и хотел бы использовать NSUserDefaults для хранения 2 целых чисел для MainView. Я буду использовать эти целые числа в основном приложении. Есть ли какой-нибудь базовый код, который может реализовать то, что я пытаюсь сделать?

Я хотел бы сохранить информацию в FlipView (если она изменена) и иметь настройку по умолчанию при первом запуске программы в MainView.

Кроме того, понадобится ли мне release объект NSUserDefaults, как только я закончу его использовать?

Ответ №1:

ознакомьтесь с приведенным ниже кодом, который я завернул и упростил для вас,

вы можете использовать приведенные ниже коды, импортировав «Settings.h» в любой код, который вы хотите использовать (возможно, AppDelegate.m) в вашем случае. затем

чтобы задать значение, используйте

 [Settings setSetting:@"AUTOLOGIN" value:@"1"];
[Settings setSetting:@"OTHERPROPERTY" value:@"100"];
  

и помните об этом, сохраняйте только тип данных указателя,

чтобы получить значение настройки:

 [Settings getSetting:@"AUTOLOGIN"];
  

здесь ниже приведены два файла настроек.h и Setting.m , сделайте эти

файл заголовка является :

 #import <Foundation/Foundation.h>    
@interface Settings : NSObject {

}
 (id) getSetting:(NSString *)key;
 (void) setSetting:(NSString *)key value:(id)v;
@end
  

— и файл реализации является

 #import "Settings.h"
@implementation GCCSettings
static NSMutableDictionary *settings = nil;

 (id) getSetting:(NSString *)key{
    if(settings == nil){
        settings = [[NSMutableDictionary alloc] initWithDictionary:
                    [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"settings"]
                    ];
    }
    return [settings objectForKey:key];
}

 (void) setSetting:(NSString *)key value:(id)v{
    [settings setValue:v forKey:key];
    [[NSUserDefaults standardUserDefaults] setObject:settings forKey:@"settings"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
@end
  

и, наконец, не освобождайте никакие объекты, которые вы не выделяли с помощью (new, init, retain и т.д.).

Ответ №2:

Вы можете сохранить целое число с помощью [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@»theKey»] и повторно использовать его с помощью [[NSUserDefaults standardUserDefaults] integerForKey:@»theKey»]. Это действительно все, что вам нужно для обработки целого числа с пользовательскими значениями по умолчанию.

Вы не освобождаете объект NSUserDefaults. Это одноэлементный элемент, поэтому на протяжении всего срока службы вашего приложения будет создан только один. Вы также не являетесь его владельцем, что означает, что вы бы его не выпускали.

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

1. отмечаю это как ответ, потому что я на самом деле начал с этого кода.