在我的iPhone应用程序代码中显示如何使用的任何示例代码:
任何其他更好的建议如何在模拟器上覆盖管理此测试数据将是好的。这里的背景是我在谈论日历中的测试数据(例如使用事件工具包),所以当我部署到我的设备时,我不希望应用程序将日历项目放入我的iPhone(对不起 - 只有1个人iPhone在这里)。
答案 0 :(得分:49)
我显然使用这样的东西......
#import <TargetConditionals.h>
#if TARGET_IPHONE_SIMULATOR
// Simulator specific code
#else // TARGET_IPHONE_SIMULATOR
// Device specific code
#endif // TARGET_IPHONE_SIMULATOR
对于你的第二个问题......这样的事可以帮助你。在您的app delegate中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ( ! [[NSUserDefaults standardUserDefaults] boolForKey:@"initialized"] ) {
// Setup stuff
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"initialized"];
}
... your code ...
}
答案 1 :(得分:12)
如果您想检查运行时(而不是使用#compiler宏编译时间),请使用以下代码:
UIDevice *currentDevice = [UIDevice currentDevice];
if ([currentDevice.model rangeOfString:@"Simulator"].location == NSNotFound) {
//running on device
} else {
// running in Simulator
}
另见这个问题: How can I programmatically determine if my app is running in the iphone simulator?
答案 2 :(得分:1)
对我有用的代码块:
#if defined(__i386__) || defined(__x86_64__)
/* Run code if in Simulator */
#else
/* Run code if in device */
#end
我注意到__i386__
不能用于iPhone 6模拟器,所以我添加了x86_64
答案 3 :(得分:1)
快捷键5:
TARGET_OS_SIMULATOR
在Swift 5中不起作用。targetEnvironment(simulator)
的工作原理如下:
#if targetEnvironment(simulator)
// code to run if running on simulator
#else
// code to run if not running on simulator
#endif