簡體   English   中英

如何在模擬器中重置鑰匙串?

[英]How do I reset the keychain in simulator?

我已經在模擬器鑰匙串中存儲了一些敏感數據的數據。 現在我必須測試如果該數據尚不存在會發生什么。

但是我無法重置模擬器的鑰匙串來測試。

我嘗試從模擬器中刪除應用程序,然后重置內容和設置。 但是鑰匙串數據仍然存在。

編輯:是的,我試過“重置內容和設置”,但這不起作用

最簡單的方法是打開模擬器並轉到:

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

重置內容和設置有時不起作用,這是一種競爭條件。 如果它不起作用,請再試一次。 如果它真的一直不工作,退出Simulator.app ,等待幾秒鍾,然后從終端運行xcrun simctl erase <Device UDID> 您可以通過運行xcrun simctl list來獲取設備的 UDID。

這個種族錯誤應該在最新的 Xcode 7 Beta 中得到解決。

在正在運行的設備上調用終端中的那些:

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;

Xcode 13.1

您可以從選項Device -> Erase All Content and Settings模擬器上的鑰匙串數據,如下圖所示。

請記住,此選項將清除模擬器上的所有當前數據。

在此處輸入圖片說明

希望能幫到人!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM