Почему моя реализация NSUserDefaults не работает под iOS 4? - PullRequest
1 голос
/ 14 августа 2010

Я прочитал и посмотрел много учебников по NSUserDefaults в iPhone OS / iOS SDK, но я не могу заставить свою собственную реализацию работать.

Сейчас я создаюпростое приложение для подсчета, которое я хотел бы загрузить последним подсчитанным числом при загрузке приложения. Однако, NSUserDefaults имеет в виду другую идею.Кто-нибудь знает, почему мой метод загрузки предпочтений продолжает возвращать (null) в NSLog?

Заранее спасибо!:)

CounterViewController.m (сокращенно)

- (void)viewDidLoad {

// yadda yadda yadda interface setup here...

    if ([self retrieveCount] == 0) {
        count = 0;
    } else {
        count = [self retrieveCount];
        NSString *temp = [[NSString alloc] initWithFormat:@"%@", count];
        [label setText:temp];
        [temp release];
    }


    [super viewDidLoad];
}

int count = 123; //whatever it might be when the user exits the application, set every time the "+" or "-" is tapped

- (void)writeCount {
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

    [prefs setInteger:count forKey:@"countKey"];
    [prefs synchronize];

}

- (int)retrieveCount {
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

    [prefs synchronize];
    int loaded = [prefs integerForKey:@"countKey"];
    NSLog(@"%@", loaded);
    return loaded;
}

CounterAppDelegate.m

- (void)applicationWillTerminate:(UIApplication *)application {
    /*
     Called when the application is about to terminate.
     See also applicationDidEnterBackground:.
     */
    [CountrViewController writeCount];
}

(Так как яЯ буду получать значение только с одного ключа, я решил не вводить данные в метод.)

Если это каким-либо образом сбивает с толку, пожалуйста, дайте мне знать!Я буду рад предоставить разъяснения.

1 Ответ

3 голосов
/ 14 августа 2010

Прежде всего, вам не нужно звонить -synchronize, прежде чем вы начнете читать значения по умолчанию, только после того, как вы напишете им. Ваш NSLog может на самом деле быть виновником здесь - попробуйте %d вместо %@. %@ для печати объектов, таких как NSString или NSNumber; int является примитивным типом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...