2011-05-16 93 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]); 

你走了。