我正在尝试通过向Web服务器发送POST请求来创建登录过程。帖子字符串包含用户在文本字段中键入的用户名和密码。
作为回复,我获得了用户ID和SHA1加密密码。由于我需要它们两个来访问服务器上的其他页面,我必须将它们全局存储在我的项目中。
所以我的问题是,最好的方法是什么?我应该创建一个USER类,我将这些项存储为属性吗?
答案 0 :(得分:0)
你应该在钥匙串中存储这些细节。你也不希望这些细节在记忆中保存得多,因为这样可以更容易地窃取。您可以创建一个包含此钥匙串访问权限的类,并且只要有要求,您就可以从钥匙串中提取值(因此,如果钥匙串无法访问,因为用户已将其锁定,则他们将无法使用)
答案 1 :(得分:0)
你可以通过两种不同的方式来做到这一点,
01: -
let Id = username.text
let password = password.text
let displayName = display.text
// TO STROE DATA
var prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
prefs.setInteger(Id!, forKey: "USERID") // FOR INTEGER VALUES
prefs.setInteger(password!, forKey: "USERPASSWORD")
prefs.setObject(displayName!, forKey: "DISPLAYNAME") // FOR STRING VALUES
prefs.synchronize()
// FOR GET STORED DATA
let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
Id.text = prefs.valueForKey("USERID") as? Int
JId.text = prefs.valueForKey("USERJID") as? Int
displayName.text = prefs.valueForKey("DISPLAYNAME") as? String
当您注销或要清除存储的数据时,只需使用
NSUserDefaults.standardUserDefaults().removePersistentDomainForName(NSBundle.mainBundle().bundleIdentifier!)
02: -
首先创建一个全局类
import Foundation
class User {
class var sharedInstance: User {
struct Static {
static var instance: User?
static var token: dispatch_once_t = 0
}
dispatch_once(&Static.token) {
Static.instance = User()
}
return Static.instance!
}
var userId: Int?
var VId: Int?
var isHome: Int?
}
然后将数据存储在您想要的类中
class ViewController: UIViewController {
let user = User.sharedInstance
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetails" {
self.user.userId = Id
self.user.VId = VacancyId
}
}
}
然后检索数据: -
class ViewController: UIViewController {
let user = User.sharedInstance
mylabel.text = self.user.userId
mylabael2.text = self.user.VId
}