NSUserDefaults的。检索不正确的值

时间:2013-08-18 17:30:59

标签: ios objective-c nsuserdefaults

我用NSUserDefaults这样保存了一些词典:

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"event_states"] == nil)
    {
        NSDictionary *dict0 = [NSDictionary dictionaryWithObjectsAndKeys:
                              @"923381DC-3DCB-46CA-A6CF-C58A7AF33B89",@"guid", 
                              @"В планах",@"name", //this string will returned corrupted
                              [NSNumber numberWithInt:12632256],@"color",
                              [NSNumber numberWithInt:0],@"isclosed",
                              [NSNumber numberWithInt:0],@"isfinish",

                  nil];
// and few more dictionaries same way
        ....

        [[NSUserDefaults standardUserDefaults] setObject:@[dict0,dict1,dict2,dict3] forKey:@"event_states"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

    NSArray *event_states = [[NSUserDefaults standardUserDefaults] objectForKey:@"event_states"];

当我检索这些数据时,我正在记录它并且有一个奇怪的行为。在某些情况下,我正在检索正确的值:

name = "\U0412 \U043f\U043b\U0430\U043d\U0430\U0445" 

但在某些情况下如下:

name = "\U0412\U044b\U043f\U043e\U043b\U043d\U0435\U043d(\U043e)

并且括号中的最后一部分是一个额外的符号,我无法理解为什么它出现以及它何时出现以及什么时候出现的依赖性。这可能有什么问题?

1 个答案:

答案 0 :(得分:2)

我尝试将您的unicode转换为可读字符串并将其粘贴到Google翻译

\U0412 \U043f\U043b\U0430\U043d\U0430\U0445 => В планах => The plans
\U0412\U044b\U043f\U043e\U043b\U043d\U0435\U043d(\U043e) => Выполнен(о) => Complete ?

所以我认为这是因为您的代码不是API。