我需要使用 NSUserDefaults 存储一个自定义类来保持用户的登录状态,
这个类包含一个自定义结构体与一些其他参数
结构体用来存储用户的昵称,主页 url,头像,auth 等
在 StackOverflow 找到了使用 NSCoding 打包存储自定义对象的方法:
http://stackoverflow.com/questions/26469457/saving-custom-swift-class-with-nscoding-to-userdefaults
可是照着写出来之后在这里出现编译错误:
func encodeWithCoder(aCoder: NSCoder) {
if let userData = self.userData {
aCoder.encodeObject(userData, forKey: "userData")
}
}
Cannot invoke 'encodeObject' with an argument list of type '(User, forKey: String)'
原因是这条声明
public var userData = User?()
其中 User 的定义如下:
public struct User {
public var id = 0
public var url = ""
public var userName = ""
public var nickName = ""
……
}
encodeWithCoder 函数应该怎么写才可以除掉编译错误呢?谢谢~
P.S.
现在使用 keyChain 保存了用户的密码,但是必须发起认证才能得到用户数据,头一次写程序,没什么经验,想知道大家都用哪些保持登录状态的方法呢?