我有一个基本的Swift文件Test.swift,其中包含

import Foundation
import UIKit

class Test: NSObject {
    let a: String
    let b: String

    override init() {
        a = NSLocalizedString("key 1", tableName: nil,
            bundle: NSBundle.mainBundle(), value: "value 1", comment: "comment 1")
        b = NSLocalizedString("key 2", comment: "comment 2")
    }
}

在此文件上运行genstrings时,收到意外警告
$ genstrings -u Test.swift
Bad entry in file Test.swift (line = 9): Argument is not a literal string.

并且生成的Localizable.strings文件缺少"key 1"的条目
$ cat Localizable.strings
??/* comment 2 */
"key 2" = "key 2";

但是,当我在文件Test.m中使用以下代码在Objective-C中进行等效操作时
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface Test: NSObject

@property (nonatomic, strong) NSString *a;
@property (nonatomic, strong) NSString *b;

@end

@implementation Test

- (id)init {
    self = [super init];
    if (self) {
        self.a = NSLocalizedStringWithDefaultValue(@"key 1", nil, [NSBundle mainBundle], @"value 1", @"comment 1");
        self.b = NSLocalizedString(@"key 2", @"comment 2");
    }
    return self;
}

@end
genstrings命令按预期工作,我得到"key 1"的条目。
$ genstrings -u Test.m
$ cat Localizable.strings
??/* comment 1 */
"key 1" = "value 1";

/* comment 2 */
"key 2" = "key 2";

我究竟做错了什么?

最佳答案

这是Xcode 6.4和Xcode 7 beta中的genstrings的错误,因为
https://openradar.appspot.com/22133811中报告:

10-08 17:44