小编Swo*_*rog的帖子

NSNumber存储在NSUserDefaults中

刚刚发生了一件奇怪的事.

我在NSUserDefaults中存储了一个带有unsigned long long值的NSNumber.当我检索它时,值只是改变了.似乎系统认为数字很长而不是无符号长.

更糟糕的是,当我将从UserDefaults检索到的数字与原始数字进行比较时,结果是NotEqual!

代码有什么问题?谢谢!

static NSString * const NumberKey = @"MyNumber";
unsigned long long value = 15908045869032883218ULL;
if ([[NSUserDefaults standardUserDefaults] objectForKey:NumberKey] == nil) {

    NSNumber *number = [NSNumber numberWithUnsignedLongLong:value];
    [[NSUserDefaults standardUserDefaults] setObject:number forKey:NumberKey];
    NSLog(@"Original Number:%@", number); // 15908045869032883218, right
}

NSNumber *number = [[NSUserDefaults standardUserDefaults] objectForKey:NumberKey];
NSLog(@"Current Number:%@", number); // -2538698204676668398, weird
NSLog(@"Current Value:%llu", [number unsignedLongLongValue]); // 15908045869032883218, right
NSLog(@"%d", [number isEqualToNumber:[NSNumber numberWithUnsignedLongLong:value]]); // 0
NSLog(@"%d", [number unsignedLongLongValue] == value); // 1
Run Code Online (Sandbox Code Playgroud)

iphone nsuserdefaults nsnumber ios

6
推荐指数
1
解决办法
5845
查看次数

当系统设置为使用24小时格式时,如何获得12小时格式时间字符串

我想得到一个像"10:00 PM"的时间字符串,我使用NSDateFormatterShortStyle来实现这一点.但是,当系统设置为使用24小时格式时,我得到的是"22:00".

此外,我想获得一个本地化的时间字符串.例如,在中文中,我希望得到"下午10:00"而不是"晚上10:00".所以我必须使用[NSLocale currentLocale],并且不能使用en_US_POSIX语言环境.

请帮我获取一个本地化的12小时格式时间字符串.

我不仅需要小时部分,还需要上午/下午部分.此外,am/pm部分可能位于小时/分钟部分之前或小时/分钟部分之后,具体取决于地区.就像系统显示时间一样.当系统设置为使用12小时格式时,它很简单.但是当系统使用24小时格式时,我无法获得本地化的12小时格式时间字符串.

datetime locale ios

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

ios ×2

datetime ×1

iphone ×1

locale ×1

nsnumber ×1

nsuserdefaults ×1