2013-08-18 121 views
1

我這樣節省一些字典中NSUserDefaultsNSUserDefaults。檢索不正確的值

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) 

,並在括號中這最後一部分是額外的符號,我不明白爲什麼它出現在什麼時候,什麼時候出現,什麼時候出現,什麼時候出現。這有什麼問題?

回答

2

我想你的Unicode字符轉換成可讀的字符串,並將其粘貼在谷歌翻譯

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

所以我覺得這事,因爲你的代碼不是API。

+0

謝謝!短語「代碼而不是API」是什麼意思? – Alex

+0

你也翻譯了正確的詞,但不知何故這(o)符號出現在完成的結尾。 – Alex

+0

你是對的,我從服務器中檢索到這種形式的數據。 – Alex