【问题标题】:ios saving and retrieving NSNumber from NSUserdefaultsios 从 NSUserdefaults 保存和检索 NSNumber
【发布时间】:2013-04-16 04:05:25
【问题描述】:

我已经搜索过,但我找不到一个很好的解释来解释为什么我仍然没有从我保存的整数中得到正确的值。

这就是我保存事件 ID 的方式。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setInteger:eventSelected.eventId forKey:@"currentEvent"];

这就是我试图检索它的方式。

NSLog(@"user dfault %@", [NSNumber numberWithUnsignedInt:[[[NSUserDefaults standardUserDefaults] objectForKey:@"currentEvent"] unsignedIntegerValue]]);

我开始了。

用户默认123581200

另外,需要注意的是,如果我做了 intValue 而不是 unsignedIntegerValue ,它仍然会给我一个随机的 ID 号。想知道我做错了什么。

【问题讨论】:

    标签: ios objective-c cocoa-touch ios4


    【解决方案1】:
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    // Convert your value to IntegerValue and Save it
    [prefs setInteger:[eventSelected.eventId integerValue] forKey:@"currentEvent"];
    // Dont forget to synchronize UserDefaults
    [prefs synchronize];
    
    // To Access this value
    NSLog(@"%d",[prefs integerForKey:@"currentEvent"]);
    

    【讨论】:

    • 感谢@NSPratik,可以将NSNumber 对象直接保存到NSUserDefaults
    【解决方案2】:

    而不是这个代码NSLog(@"user dfault %@", [NSNumber numberWithUnsignedInt:[[[NSUserDefaults standardUserDefaults] objectForKey:@"currentEvent"] unsignedIntegerValue]]);

    使用这个

    NSLog(@"user dfault %@", [[NSUserDefaults standardUserDefaults]  integerForKey:@"currentEvent"]);
    

    【讨论】:

      【解决方案3】:

      NSNumber 给出一个指针值,而不是整数值。

      【讨论】:

        【解决方案4】:

        要检索整数,您应该使用以下函数:

        [[NSUserDefaults standardUserDefaults]  integerForKey:@"currentEvent"];
        

        当您请求 objectForKey 时,它会先将其装箱,然后返回对象。发布 intValue 会将该对象的地址转换为整数。因此,每次您都会收到不同的号码。

        【讨论】:

          【解决方案5】:
          NSNumber *number;
          

          商店:

          [[NSUserDefaults standardUserDefaults] setValue:number forKey:@"Number"];
          

          检索:

          number = [NSNumber numberWithInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"Number"]];
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多