- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用诸如 NSDoubleLocalizedStrings
和 NSShowNonLocalizedStrings
之类的启动参数来测试我的 Objective-C 项目中的本地化。出于某种原因,我无法让他们都工作。我尝试在启动时设置参数和方案设置中的选项: 我还检查了 NSUserDefaults
键,它们都是 YES
。但是争论仍然不起作用。
为了确保它不是 XCode 错误,我在 Objective-C 和 Swift 上创建了一个全新的单 View 项目,在 View 上有一个标签。这两个项目都有空的 Localizable.strings
文件,这些项目中的代码如下:
@interface ViewController ()
@property (nonatomic, strong) IBOutlet UILabel *label;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.label.text = NSLocalizedString(@"Some text", nil);
}
@end
和
class ViewController: UIViewController {
@IBOutlet var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
label.text = NSLocalizedString("Some text", comment: "")
}
}
结果是这样的:
下面是问题:
1) 启动参数在我的 Objective-C 项目中不起作用的原因可能是什么?
2) 为什么 NSDoubleLocalizedStrings
参数在 Swift 中不起作用?
最佳答案
我花了几天时间调查并逐渐删除我的 Objective-C 项目中的所有文件和框架,我发现原因在 AFNetworking
库中。问题描述 here .如果您想在项目中使用 AFNetworking
并调试本地化问题,您可以将这些行添加到 application: didFinishLaunchingWithOptions:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:YES forKey:@"NSDoubleLocalizedStrings"];
[defaults setBool:YES forKey:@"NSShowNonLocalizedStrings"];
[defaults synchronize];
在 第二次 启动应用程序时,您会看到这些启动参数起作用。
关于为什么 NSDoubleLocalizedStrings
参数在 Swift 中不起作用的第二个问题的答案是它可能是 XCode 中的一个错误。它可能与 Swift 不支持的宏相关联,而 NSLocalizedString
实际上是一个宏。因此我在 radar 上创建了一个错误.
关于ios - 启动参数(NSDoubleLocalizedStrings、NSShowNonLocalizedStrings)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44228367/
我在 Xcode 5.1.1 中创建了一个新的 iOS 应用程序,目标是 iOS 7.1,并在 application:didFinishLaunchingWithOptions 中添加了这些行: N
我正在尝试使用诸如 NSDoubleLocalizedStrings 和 NSShowNonLocalizedStrings 之类的启动参数来测试我的 Objective-C 项目中的本地化。出于某种
我是一名优秀的程序员,十分优秀!