我已经创建了一个应用程序来很好地解释我的问题。 页面(ViewController)中有一个按钮
这是ViewController.swift
文件
import UIKit
import SwiftKeychainWrapper
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let resultOfTheMethod = checkKeychainWrapperExistOrNot()
print("checkKeychainWrapperExistOrNot method result: \(resultOfTheMethod)")
}
@IBAction func btnPressed(_ sender: UIButton) {
saveSomeDummyDataInToTheKeychainWrapper()
}
func saveSomeDummyDataInToTheKeychainWrapper()
{
KeychainWrapper.standard.set("TEST_123", forKey: "someKey4KeychainWrapper")
}
func checkKeychainWrapperExistOrNot () -> Bool {
if let _ = KeychainWrapper.standard.string(forKey: "someKey4KeychainWrapper")
{
return true
}
return false
}
}
让我解释一下我的工作顺序:
我已将iPhone插入Mac。然后,我第一次使用iPhone来运行该应用程序。我从viewDidLoad
方法获得了此输出:
checkKeychainWrapperExistOrNot method result: false
然后我单击了按钮。之后,我关闭了应用程序并再次打开它。我得到以下输出:
checkKeychainWrapperExistOrNot method result: true
然后按顺序完成以下步骤: 从我的iPhone中删除了该应用, 单击:产品>“清洁生成文件夹”, 然后重新运行该应用程序。我得到以下输出:
checkKeychainWrapperExistOrNot method result: true
结果是:KeyChainWrapper项未删除。我想确认一下,因为它有点奇怪:我已经完成了此应用程序:已将其从手机中删除。但是我的iPhone中仍然有一些与此删除的应用程序相关的文件。
因此,我的第一个问题是:当我们从iPhone中删除应用程序时,KeyChainWrapper项不会被删除吗?这些什么时候删除?
第二个问题:如何删除所有KeychainWrapper物品?假设我有很多像这样的KeychainWrapper物品:
KeychainWrapper.standard.set("TEST_123", forKey: "someKey4KeychainWrapper")
KeychainWrapper.standard.set("TEST_123", forKey: "someKey4KeychainWrapper2")
KeychainWrapper.standard.set("TEST_123", forKey: "someKey4KeychainWrapper3")
如何删除所有这些?