在NSObject类中调用时,NSLocalizedStringFromTableInBundle给出属性列表错误

时间:2019-03-08 13:25:31

标签: ios objective-c

我已经为几种语言(XYZLocalizable.strings)创建了自己的可本地化的字符串文件,并将其添加到捆绑软件中。我可以使用以下行在UIViewController类中获取字符串:

NSLocalizedStringFromTableInBundle(@"xyz_plugin_title", @"XYZLocalizable", [XYZPluginDelegate bundle], nil);

但是如果我在NSObject类中添加以下行,则整个构建都会失败:

@interface XYZStringResourceUtil : NSObject

+ (NSString *) getLocalizedString:(NSString *) stringKey;
.
.

@end

@implementation XYZStringResourceUtil

+ (NSString *) getLocalizedString:(NSString *) stringKey {
    NSLocalizedStringFromTableInBundle(stringKey, @"XYZLocalizable", [XYZPluginDelegate bundle], nil);
}
.
.

@end

我得到的错误是:

../DerivedData/XXXXXX/Build/Intermediates.noindex/YYYY.build/Debug-iphonesimulator/ZZZZZ.build/Localization/en.lproj/XYZLocalizable.strings: Unexpected character ÿ at line 1
../DerivedData/XXXXXX/Build/Intermediates.noindex/YYYY.build/Debug-iphonesimulator/ZZZZZ.build/Localization/en.lproj/XYZLocalizable.strings: Property List error: Unexpected character ÿ at line 1 / JSON error: JSON text did not start with array or object and option to allow fragments not set.

奇怪的是,即使我从磁盘上删除了.strings文件,也会弹出错误消息。仅当我从NSObject类中删除该行时,构建才会通过。

NSLocalizedStringFromTableInBundle在可以使用的地方有任何限制吗?

我已经浪费了好几天的时间来尝试寻找并解决此构建失败的根本原因。如果有人可以帮助解决此问题,我将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

我能够通过创建包含不稳定代码的方法e,而不是类方法,来找到解决方法。

尽管仍然不清楚为什么类方法不起作用。