相关疑难解决方法(0)

如何在同一源文件中有条件地编译特定于版本的Swift(1.2 vs 2.0)代码?

我有一个与我的框架捆绑在一起的Swift演示项目.我想确保演示中的Swift代码与Xcode 6(Swift 1.2)和Xcode 7(Swift 2.0)成功编译,无需用户干预.

由于Swift中只有边缘预处理器支持,如何在编译时确定使用哪个版本的Swift或Xcode来编译代码?

现在,这是重要的细节:

  • 它必须自动工作!
    • 在Xcode 6中打开项目 - >编译Swift 1.2代码.
    • 在Xcode 7中打开项目 - >编译Swift 2.0代码.

没有构建设置或其他需要用户以某种方式指定她正在使用的Swift/Xcode版本的方法.

我一直在想:这是一项微不足道的任务,用Swift怎么可能不可能?

作为一个框架开发人员,这让我感到疯狂,因为Swift项目的成功编译现在完全取决于用户的Xcode版本,我不能要求他们全部"更新到Xcode 6.4",稍后不得不问他们一遍又一遍地"更新到Xcode 7.1".疯了吧!

另一种选择当然是拥有单独的演示项目,管理不同的代码库,每个版本的Swift都有一个.并希望用户知道哪个项目适用于她的Xcode版本.不是一个真正的选择.

遗憾的是,另一种替代方案,即根本不使用任何Swift 2.0的增强功能.有一些语法,类和方法在一个或另一个Swift版本中不起作用,只是因为编译器在较新的Xcode版本中更加挑剔.

xcode preprocessor compilation swift swift2

5
推荐指数
2
解决办法
1348
查看次数

我应该如何在Swift中替换这些屏幕尺寸和设备类型宏?

回到Objective-C,我在constants.h文件中定义了以下宏:

#define IS_IPHONE5 (([[UIScreen mainScreen] bounds].size.height-568)?NO:YES)
#define IS_IPAD    (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
#define IS_IOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
#define APP_DEFAULT_FONT_FACE @"HelveticaNeue-Light"
#define APP_DEFAULT_FONT_FACE_THIN @"HelveticaNeue-UltraLight"
#define APP_VERSION @"1.2"
Run Code Online (Sandbox Code Playgroud)

我开始玩Swift,我注意到这些东西不再起作用了.那么现在我应该如何定义这些宏,并检测设备属于哪个系列?

如果Swift没有宏,那么这样做的语法是什么?

objective-c ios swift

4
推荐指数
2
解决办法
2162
查看次数

由于Swift中没有预处理器,是什么取代了C宏?

有没有办法在Swift中执行#define,#ifdef和其他强大的宏?

cocoa swift

3
推荐指数
1
解决办法
1824
查看次数

Swift:多个目标处理:宏不起作用

来自参考如何使用swift语言处理XCode中的多个目标?https://www.appcoda.com/using-xcode-targets/

我创建了三个目标,每个目标都有不同的捆绑ID和应用程序图标.我还在"其他swift标志" - >自定义swift标志部分添加了不同的标志

喜欢

对于第一个目标,我添加了"-DGOLD",对于第二个目标,我添加了"-DSILVER",对于第三个目标,我添加了"-DPLATINUM".

在AppDelegate中我写了一个代码

#if GOLD
print ("Gold")
#elseif SILVER
print ("Silver")
#else
print ("Platinum")
#endif
Run Code Online (Sandbox Code Playgroud)

仅供参考, I am using Xcode 8.3

我试图运行第一个目标,我总是得到"白金".请告诉我如何正确地获得旗帜

macros xcode targets ios

2
推荐指数
1
解决办法
1604
查看次数

标签 统计

swift ×3

ios ×2

xcode ×2

cocoa ×1

compilation ×1

macros ×1

objective-c ×1

preprocessor ×1

swift2 ×1

targets ×1