Swift`TARGET_`定义在框架中不起作用

时间:2016-01-14 19:50:23

标签: xcode swift2

我试图制作一个可以在iOS和OS X上运行的框架

我发现的问题是在.framework中默认' TARGET_定义不起作用。

我想使用此代码:

#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
    import UIKit
#endif
#if TARGET_OS_MAC
    import AppKit
#endif

但它失败了,所以我构建了一个简单的测试代码,结果不是很好(对我来说)。

#if TARGET_OS_IPHONE
    print("Hello iPhone")
#elseif TARGET_OS_SIMULATOR
    print("Hello iPhone Simulator")
#elseif TARGET_OS_MAC
    print("Hello OS X")
#elseif TARGET_OS_TV
    print("Hello  TV")
#elseif TARGET_OS_NANO
    print("Hello Nano!")
#elseif TARGET_OS_EMBEDDED
    print("Hello Embedded?")
#else
    print("What kind of target are you!?")
#endif

// Prints What kind of target are you!?

framework.xcodeproj 位于iOS应用的项目中。

所以我期待 TARGET_OS_SIMULATOR

也许有人知道我如何在框架中安排这个,我无法找到答案。

先谢谢

1 个答案:

答案 0 :(得分:2)

找到解决方案。

使用:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html#//apple_ref/doc/uid/TP40014216-CH8-ID31

#if os(value)
...
#endif

会奏效。

支持的值包括:OSX,iOS,watchOS,tvOS

示例:

#if os(iOS)
    print("Hello iOS")
#elseif os(OSX)
    print("Hello OS X")
#elseif os(watchOS)
    print("Hello  Watch")
#elseif os(tvOS)
    print("Hello  TV")
#endif

我希望这可以帮助别人。