为了账号安全,请及时绑定邮箱和手机立即绑定

检测是否正在为Swift中的设备或模拟器构建应用程序

检测是否正在为Swift中的设备或模拟器构建应用程序

潇湘沐 2019-10-24 11:22:05
在Objective-C中,我们可以知道是否正在使用宏为设备或模拟器构建应用程序:#if TARGET_IPHONE_SIMULATOR    // Simulator#else    // Device#endif这些是编译时宏,在运行时不可用。如何在Swift中实现相同目标?我搜索了堆栈溢出,查看了文档,但无法弄清楚。
查看完整描述

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

已过时SWIFT 4.1。使用#if targetEnvironment(simulator)代替。资源


要在Swift中检测模拟器,您可以使用构建配置:


在Swift编译器-自定义标志>其他Swift标志中定义此配置-D IOS_SIMULATOR

在此下拉列表中选择任何iOS模拟器SDK下拉列表

现在,您可以使用以下语句来检测模拟器:


#if IOS_SIMULATOR

    print("It's an iOS Simulator")

#else

    print("It's a device")

#endif

您也可以扩展UIDevice类:


extension UIDevice {

    var isSimulator: Bool {

        #if IOS_SIMULATOR

            return true

        #else

            return false

        #endif

    }

}

// Example of usage: UIDevice.current.isSimulator


查看完整回答
反对 回复 2019-10-24
?
喵喔喔

TA贡献1735条经验 获得超5个赞

基于@WZW的答案和@Pang的评论,我创建了一个简单的实用程序结构。此解决方案避免了@WZW的回答产生警告。


import Foundation


struct Platform {


    static var isSimulator: Bool {

        return TARGET_OS_SIMULATOR != 0

    }


}

用法示例:


if Platform.isSimulator {

    print("Running on Simulator")

}


查看完整回答
反对 回复 2019-10-24
  • 3 回答
  • 0 关注
  • 692 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信