2015-02-20 1 views
-1

Я пытаюсь прочитать два значения NSNumber, которые я написал для NSUserDefaults39993). Я могу написать значения просто отлично, но чтение его дает совершенно разные значения, чем ожидалось. Если бы NSNumber мог быть прочитан правильно, я хотел бы затем преобразовать его в UInt32, как это было первоначально.Невозможно правильно прочитать NSNumber

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    [self writeDefaults]; 
    [self readDefaults]; 
} 

- (void)writeDefaults { 

    UInt32 val1 = 24; 
    UInt32 val2 = 39993; 

    NSNumber* value1 = [NSNumber numberWithUnsignedInteger:val1]; 
    NSNumber* value2 = [NSNumber numberWithUnsignedInt:val2]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    [defaults setObject:value1 forKey:@"value1"]; // saves 24 
    [defaults setObject:value2 forKey:@"value2"]; // saves 39993 

    NSLog(@"value1: %@",value1); // outputs 24 
    NSLog(@"value2: %@",value2); // outputs 39993 

    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

- (void)readDefaults { 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    NSNumber *val1 = [defaults valueForKey:@"value1"]; 
    NSNumber *val2 = [defaults valueForKey:@"value2"]; 

    NSLog(@"val1: %u",(unsigned int)val1); // outputs 6199 
    NSLog(@"val2: %u",(unsigned int)val2); // outputs 10238263 
} 
@end 

Любая идея, что я делаю неправильно на readDefaults части? Благодарю.

+0

@Josh Caswell, вопрос вы связаны на самом деле не выглядят одинаково. –

+0

Это точно такая же фундаментальная проблема. –

+0

@JoshCaswell, Когда я искал, что ответ так и не появился - возможно, параметры алгоритма поиска нуждаются в фундаментальной реконструкции. –

ответ

2

Вы печатаете адрес указателя памяти на NSNumber объекты

сделать

NSLog(@"val1: %lu",[val1 unsignedIntegerValue]); 
NSLog(@"val2: %lu",[val2 unsignedIntegerValue]); 

или остаться в объектном мире

NSLog(@"val1: %@",val1); 
NSLog(@"val2: %@",val2); 
+0

Спасибо, что мне нужно. –