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

时间:2015-07-03 09:04:09

标签: ios xcode6 ios-simulator

我已经在模拟器钥匙串中存储了一些数据用于敏感数据。 现在我必须测试如果该数据尚未出现会发生什么。

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

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

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

3 个答案:

答案 0 :(得分:5)

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

这个种族错误应该在最新的Xcode 7 Beta中解决。

答案 1 :(得分:2)

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

"iOS Simulator -> Reset Content and Settings" 这将重置模拟器中的所有内容,并将其恢复为默认设置。

如果您想通过代码执行此操作,可以这样做:

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);
}

答案 2 :(得分:0)

在正在运行的设备上调用终端:

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;