Xcode 8宏NSLocalizedString的模糊扩展
我在unit testing.pch文件中有以下内容,以允许我的unit testing找到正确的本地化文件包,这一点工作正常,直到我升级到Xcode8。
#undef NSLocalizedString #define NSLocalizedString(key, comment) [[NSBundle bundleWithIdentifier:@"Tests-Unit"] localizedStringForKey:(key) value:@"" table:nil]
现在,我得到了警告
Ambiguous expansion of macro NSLocalizedString
这可以解释为什么我的unit testing失败,因为他们无法再找到本地化的字符串值。
有什么想法吗? 我现在需要做些什么不同的事情吗?
编辑:我觉得它与我的所有源文件在2个目标中有关,即一个用于项目,一个用于unit testing,这是我们设置它的方式。 我正在尝试清理它并从unit testing目标中删除所有源文件并添加了
@testable import ProjectName
而是unit testing文件,以便能够访问我的代码进行测试,但我现在得到
File 'MyFile.swift' is part of module 'ProjectName'; ignoring import.
我终于把它全部搞定了。
让我们假装我们的项目叫做Panda ,它包含Obj-C和Swift文件。 所有这些文件都在我们的Panda和PandaTests目标中。
第1 步 :确保所有文件都具有正确的目标成员资格,即Panda目标:仅源文件,开发框架,图像等和PandaTests目标:仅测试文件,测试框架,模拟数据等
第2步:确保您的Panda项目的Build Settings – > Enable Testability设置为Yes 。
第3 步 :确保您的PandaTests项目将构建设置 – >产品模块名称设置为PandaTests 。
步骤4:按住Option按钮,然后单击Product,进行干净的清洁。 您应该看到一个Clean Build Folder选项。
第5 @testable import Panda
:对于Swiftunit testing,添加@testable import Panda
。 由于我们现在已经从PandaTests目标中删除了所有源代码文件,因此unit testing需要一种访问我们项目文件的方法。 这使我们的Swiftunit testing能够访问我们的Panda-Bridging-Header.h中包含的所有Swift文件和Obj-C文件。
看起来像是解决了这个问题,但不确定是什么副作用。
Xcode构建设置和设置
其他C标志-Wno-ambiguous-macro
HTH