我已经在模拟器钥匙串中存储了一些数据用于敏感数据。 现在我必须测试如果该数据尚未出现会发生什么。
但是我无法重置模拟器的钥匙串来测试它。
我尝试从模拟器中删除该应用,然后执行重置内容和设置。但钥匙串数据仍然存在。
编辑:是的,我已尝试“重置内容和设置”,但这不起作用
答案 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;