2011-05-16 82 views
0
defs = [NSUserDefaults standardUserDefaults]; 
languages=[[NSMutableArray alloc]init]; 
languages= [defs objectForKey:@"AppleLanguages"]; 
NSString* preferredLang = [languages objectAtIndex:14]; 
NSString *[email protected]"zh-Hans"; 
NSString *[email protected]"en"; 
[languages replaceObjectAtIndex:0 withObject:chn]; 
[languages replaceObjectAtIndex:14 withObject:eng]; 
defs=(NSUserDefaults*)languages; 

我可以改變NSUserDefaults defs的內容。但它對蘋果語言沒有影響。誰能幫我?我需要將defs的第一個對象存儲爲當前語言。如何更改當前的語言?

+1

我不知道你的問題的答案,但是你應該刪除'languages = [[NSMutableArray alloc] init];',因爲你覆蓋它下面的行,這是內存泄漏。 – jv42 2011-05-16 08:55:56

+0

笏你想要做什麼?可能是你的問題的其他解決方案。 – 2011-05-16 09:16:10

+0

實際上,在defs中,我將英文更改爲中文簡體,然後我想添加中文作爲當前語言,以便更改我的鍵盤語言。請幫助我 – 2011-05-16 09:25:04

回答

0

你可能試圖做到這一點

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSMutableArray *languages = [defaults objectForKey:@"AppleLanguages"]; 

languages = [[languages mutableCopy] autorelease]; 

[languages replaceObjectAtIndex:0 withObject:@"zh-Hans"]; 
[languages replaceObjectAtIndex:14 withObject:@"en"] 
[defaults setObject:languages forKey:@"AppleLanguages"]; 

但你一定要強加給用戶的語言?他總是可以選擇通過設置應用程序更改語言。

您還需要確保已經正確設置了本地化的字符串。如果你還沒有,你應該通過this文件。

+1

沒有理由在將默認值置入默認值之前製作mutableList的副本。 – Eiko 2011-05-16 09:19:11

+0

你能告訴我如何在我的應用程序中使用多種語言 – 2011-05-16 09:34:18

+0

@Eiko你說的對。這兩個「副本」都是不必要的。 – 2011-05-16 09:38:32

1

看起來像是在嘗試爲用戶設置當前語言。

這在iOS sdk中不支持;用戶必須在設置中自行完成此操作。

如果你解釋你嘗試這樣做的動機,也許我可以提供一個解決方案。

+0

thanxs,其實在defs我把英文語言改爲中文簡體,然後我想添加中文作爲當前語言,以便它改變我的鍵盤語言。請幫助我 – 2011-05-16 09:26:30

+0

你能否告訴我如何在我的應用程序中使用多種語言 – 2011-05-16 09:34:33

0
NSMutableArray *languages= [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]; 
    NSString *[email protected]"zh-Hans"; 
    NSString *[email protected]"en"; 
    [languages replaceObjectAtIndex:0 withObject:chn]; 
    [languages replaceObjectAtIndex:14 withObject:eng]; 
    [[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

    NSMutableArray *languagesAterChange= [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]; 
    NSLog(@"Lang:%@ | %@",[languagesAterChange objectAtIndex:0],[languagesAterChange objectAtIndex:14]); 

你走了。