iOS中的用户对象位置(swift)
我有一个用户对象,我想为它存储当前登录的用户,并具有允许用户执行操作的功能,例如注销、登录等 根据各种教程和这里的大量帖子,我想出了一些代码,在通过登录页面登录时效果很好。这是代码:iOS中的用户对象位置(swift),ios,swift,nsuserdefaults,Ios,Swift,Nsuserdefaults,我有一个用户对象,我想为它存储当前登录的用户,并具有允许用户执行操作的功能,例如注销、登录等 根据各种教程和这里的大量帖子,我想出了一些代码,在通过登录页面登录时效果很好。这是代码: import Foundation import UIKit // define the protocol for using this class protocol LoginProtocol { func didRecieveLoginResponse(status: Bool, message: S
import Foundation
import UIKit
// define the protocol for using this class
protocol LoginProtocol {
func didRecieveLoginResponse(status: Bool, message: String?)
}
class User : APIControllerProtocol {
var delegate: LoginProtocol
var username: String?
var company: String?
var auth_token: String?
// more properties here
// initiate the class, must have a delegate as per the protocol
init(delegate: LoginProtocol, username: String?, school: String?) {
self.delegate = delegate
if(username != nil) {
self.username = username
self.company = company
}
}
// login using the API
func login(password: String) {
print("Logging in as " + username! + " - " + company!)
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
let api = APIController(delegate: self)
var postFields = [String: String]()
postFields["username"] = username
postFields["password"] = password
postFields["company"] = company
api.request("login",postData: postFields)
}
// API results were received, log in the user if appropriate
func didRecieveAPIResults(originalRequest: String,apiResponse: APIResponse) {
dispatch_async(dispatch_get_main_queue(), {
if(apiResponse.status == true) {
self.auth_token = details["auth_token"]
// more properties here
self.save_to_user_defaults()
self.delegate.didRecieveLoginResponse(true, message:nil )
} else {
self.delegate.didRecieveLoginResponse(false, message:apiResponse.message )
}
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
})
}
// save the properties to user defaults
func save_to_user_defaults() {
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(self.username, forKey: "username")
defaults.setObject(self.company, forKey: "company")
defaults.setObject(self.auth_token, forKey: "auth_token")
// more properties here
}
// load the properties from user defaults
func load_from_user_defaults() {
let defaults = NSUserDefaults.standardUserDefaults()
self.username = defaults.objectForKey("username") as? String
self.company = defaults.objectForKey("company") as? String
self.auth_token = defaults.objectForKey("auth_token") as? String
// more properties here
}
}
我的下一个阶段是通过NSUserDefaults登录用户-我的计划是通过以下方式:
let user = User()
user.load_from_user_defaults()
但我不太确定:
- 我是否在正确的轨道上(这是我第一个完整的swift应用程序)
- 如果我是,将上述两行代码(可能是应用程序代理?)放在哪里,这样当应用程序打开时,NSUserDefaults中的用户(如果有)将重新登录
- 如何允许用户访问应用程序的其余部分(我希望能够在我的视图控制器中引用用户数据,例如,让pointsLabel.text=users.points)
提前非常感谢 希望,我的回答将有助于改进您的应用程序:
NSUserDefaults
不安全,可以在设备和Mac上轻松打开和读取。因此,用户默认值是首选项和配置信息的好地方,但它不适合敏感信息,如密码。有关更多详细信息,请查看谢谢你,安妮,这真的很有用!据推测,像用户名这样的东西在NSUserDefaults中很好,但是像身份验证令牌这样的东西应该放在密钥链中?是的,你可以在NSUserDefaults中存储非敏感信息(用户名也很好)。