我想在我的应用程序上保存数据,我使用DataCore进行保存,但它将数据保存在实体中,并且此实体中的属性可以保存许多不同的值.我需要在Android中为每个属性保存一个数据作为首选项.我怎么能这样做?请帮我.谢谢.这是我的代码:
@IBAction func SaveAll(sender: AnyObject) {
let username:String = user_name.text!
let password:String = pass_word.text!
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext
let newStu = NSEntityDescription.insertNewObjectForEntityForName("Student", inManagedObjectContext: context) as NSManagedObject
newStu.setValue(username, forKey: "userName")
newStu.setValue(password, forKey: "passWord")
do {
try context.save()
} catch {}
}
Run Code Online (Sandbox Code Playgroud)
你应该UserDefaults这样做.它可以让您在首选项中保存不安全的数据.此外,您可能希望存储某种会话管理密钥,而不是密码,您可以在每次登录一段时间后从服务器收到该密钥.这比直接存储密码更安全一些.
使用UserDefaults,您可以将任何想要的内容保存到手机上持久存储的键值存储中,而且您不必混淆复杂的CoreData内容.
就这样做吧
@IBAction func SaveAll(sender: AnyObject) {
let username:String = user_name.text!
let password:String = pass_word.text!
let defaults = UserDefaults.standard
defaults.set(username, forKey: "username")
defaults.set(password, forKey: "password")
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以调用相应的defaults.string(forKey: "username")和密码函数轻松检索它们.
尝试 SwiftKeyChainWrapper -链接
这是一个有用的库,用于在设备上保存敏感数据。
用法
向钥匙串添加字符串值:
let saveSuccessful: Bool = KeychainWrapper.standard.set("Some String", forKey: "myKey")
Run Code Online (Sandbox Code Playgroud)
从钥匙串中检索字符串值:
let retrievedString: String? = KeychainWrapper.standard.string(forKey: "myKey")
Run Code Online (Sandbox Code Playgroud)
从钥匙串中删除字符串值:
let removeSuccessful: Bool = KeychainWrapper.standard.removeObject(forKey: "myKey")
Run Code Online (Sandbox Code Playgroud)
将数据存储到内存中NSUserDefaults是一种非常传统的将数据存储到内存的方式,也是一种非常流畅的获取和设置数据的方式。但是,当您考虑数据的安全性时,这NSUserDefaults将无济于事。我的意思NSUserDefaults是不安全和加密,所以它很容易被破解。对于一般数据存储NSUserDefaults肯定会有所帮助,但是当您想要存储用户名和密码等敏感数据时,您必须考虑数据安全性。
我总是更喜欢使用Keychain Service API来存储此类数据。钥匙串提供了保存敏感数据的安全替代方案。Apple 提供了Keychain Services API解决此问题的方法,并帮助开发人员构建可以安全处理密码和其他敏感信息的应用程序。
您可以在此处找到 Apple 的文档
\n\nGithub 和其他依赖管理站点上有许多包装器作为 Cocoapods 或扩展库存在。以下是我找到的一些参考。
\n\n\n\n2.)锁匠
\n\nApple\xe2\x80\x99s 自己的钥匙串包装器被调用,并且在和GenericKeychain中的示例代码中可用。Objective-CSwift
我认为这个答案可能与这个问题不准确相关,但这可能会对社区中的一些人有所帮助。
\n| 归档时间: |
|
| 查看次数: |
7206 次 |
| 最近记录: |