【发布时间】:2012-06-03 07:01:48
【问题描述】:
无论如何,我是一个非常绿色的nubie,我正在学习一个教程,该教程将引导我使用 NSLocale 类来获取当地货币,如下所示:
NSLocale *here = [NSLocale currentLocale];
NSString *currency = [here objectForKey:NSLocaleCountryCode];
NSLog(@"Money is %@", currency);
所以,我知道我正在创建一个名为“here”的 NSLocale 类的实例,然后我向“here”对象发送一条消息,询问 objectForKey,并将结果返回到名为“currency”的 NSString .最后,我用 NSLog 打印货币值。
好的,这是我的问题,然后我查看了 NSLocale 类上还有哪些其他方法,我发现了一个名为“preferredLanguages”的方法,它返回一个首选语言数组。所以我虽然我会调用该方法,然后将其打印到日志中,只是为了微笑并帮助我学习。离开上面的例子,我想我会这样称呼它。从上面的代码中我已经有一个名为“here”的 NSLocale 类的实例开始,我认为我只需要以下内容(我重复上面的三行只是为了便于在这里阅读。)
NSLocale *here = [NSLocale currentLocale];
NSString *currency = [here objectForKey:NSLocaleCountryCode];
NSLog(@"Money is %@", currency);
NSArray *prefLangs = [here preferredLanguages];
NSLog(@"Preferred Languages are: %@", prefLangs);
但这不起作用,我收到一条错误消息,上面写着“'NSLocale' 没有可见的@interface 声明选择器'preferredLanguages'
我发现我必须这样做:
NSLocale *here = [NSLocale currentLocale];
NSString *currency = [here objectForKey:NSLocaleCountryCode];
NSLog(@"Money is %@", currency);
NSArray *prefLangs = [NSLocale preferredLanguages];
NSLog(@"Preferred Languages are: %@", prefLangs);
我只是不明白为什么我必须这样调用该方法:[NSLocale preferredLanguages],而不是 [这里是 preferredLanguages]。上面已经创建了“这里”的实例。谁能解释一下。
【问题讨论】:
-
虽然您的问题以 NSLocale 为例,但它实际上是关于实例与类方法的。您可能需要考虑更改问题的标题,以使其对可能访问Stack Overflow 并遇到与您相同的问题的其他人有用。
标签: method-call nslocale