我正在调试从Internet获取主数据的应用程序中看到的一些不一致的行为。我在模拟器中没有看到问题,只是在设备上,所以我想在模拟器中重现网络和连接环境。

在模拟器中是否有禁用网络的方法?

(我正在远程连接到Mac上编写代码,目前没有其他选择,所以不能禁用操作系统网络)。


当前回答

如果你的应用程序连接到一个特定的域,你可以简单地将它添加到你的/etc/hosts文件中,并将它路由到本地网络中不存在的IP地址……对于应用程序来说,就像没有任何Internet连接或服务器不可达一样。

sudo nano /etc/hosts

增加如下一行:

192.168.1.123   example.com

如果您在本地机器上没有运行web服务器,则使用127.0.0.1。

其他回答

只要在Mac OS x上关掉你的Wi-Fi就行了。

一个可能是疯狂的想法或补丁:

只需切换网络可达性标志

这是我用来在运行时通过触发“模拟器内存警告”切换我的标志的代码,它是完全安全的。只要确保代码应该只处于调试模式

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
#ifdef DEBUG
    isInternetAvailable = !isInternetAvailable;
#endif
}

您可以使用ohhttpstub和存根网络请求特定的url失败。

如果你的应用程序连接到一个特定的域,你可以简单地将它添加到你的/etc/hosts文件中,并将它路由到本地网络中不存在的IP地址……对于应用程序来说,就像没有任何Internet连接或服务器不可达一样。

sudo nano /etc/hosts

增加如下一行:

192.168.1.123   example.com

如果您在本地机器上没有运行web服务器,则使用127.0.0.1。

由于Xcode没有提供这样的功能,你肯定会去找一些第三方应用程序/工具。 关闭Mac网络也将有助于关闭iOS模拟器网络。

你可以在系统设置中关闭你的Mac网络连接…→网络并关闭所需的网络源。

关闭你的Mac以太网Internet源:

关闭你的Mac Wi-Fi网络源(如果你的Mac有Wi-Fi网络连接):