Ios 如何在模拟器中重置钥匙链?

Ios 如何在模拟器中重置钥匙链?,ios,xcode6,ios-simulator,Ios,Xcode6,Ios Simulator,我在模拟器钥匙链中存储了一些敏感数据。 现在我必须测试如果数据还不存在会发生什么 但我无法重置模拟器的钥匙链来测试它 我尝试从模拟器中删除应用程序,然后重置内容和设置。但钥匙链数据仍然存在 编辑:是的,我尝试过“重置内容和设置”,但不起作用最简单的方法是打开模拟器并转到: “iOS模拟器->重置内容和设置” 这将重置模拟器中的所有内容,并将其恢复为默认设置 如果您想通过代码执行此操作,可以按如下方式执行: NSArray *secItemClasses = @[(__bridge id)kSec

我在模拟器钥匙链中存储了一些敏感数据。 现在我必须测试如果数据还不存在会发生什么

但我无法重置模拟器的钥匙链来测试它

我尝试从模拟器中删除应用程序,然后重置内容和设置。但钥匙链数据仍然存在


编辑:是的,我尝试过“重置内容和设置”,但不起作用

最简单的方法是打开模拟器并转到:

“iOS模拟器->重置内容和设置”
这将重置模拟器中的所有内容,并将其恢复为默认设置

如果您想通过代码执行此操作,可以按如下方式执行:

NSArray *secItemClasses = @[(__bridge id)kSecClassGenericPassword,
                       (__bridge id)kSecClassInternetPassword,
                       (__bridge id)kSecClassCertificate,
                       (__bridge id)kSecClassKey,
                       (__bridge id)kSecClassIdentity];
for (id secItemClass in secItemClasses) {
    NSDictionary *spec = @{(__bridge id)kSecClass: secItemClass};
    SecItemDelete((__bridge CFDictionaryRef)spec);
}

存在重设内容和设置的竞争条件,有时不起作用。如果不起作用,请再试一次。如果它真的继续不工作,请退出
Simulator.app
,等待几秒钟,然后从终端运行
xcrun simctl erase
。您可以通过运行
xcrun simctl list
获取设备的UDID


这个竞赛错误应该在最新的Xcode 7测试版中解决。

调用运行设备终端中的错误:

xcrun simctl spawn${device_udid}launchctl stop com.apple.securityd;
rm-rf${HOME}/Library/Developer/CoreSimulator/Devices/${device_udid}/data/Library/Keychains;
xcrun simctl spawn${device_udid}launchctl start com.apple.securityd;

菜单中有一个选项:“iOS模拟器”->“重置内容和设置”。)我试过了。实际上不起作用,“iOS模拟器->重置内容和设置”不起作用。“重置内容和设置”相当于设备还原(将重置您的钥匙链),如果“重置内容和设置”不起作用,那听起来像是模拟器中的一个错误。不确定苹果做了什么,但“重置内容和设置”甚至不再从模拟器中删除应用程序……你使用的模拟器版本是什么?你确定在安装应用程序后不添加值吗?我提交了一个雷达问题,被苹果标记为重复。所以他们正在研究它,或者它已经在下一个XCode版本中修复了。