我需要使用 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 保存了用户的密码,但是必须发起认证才能得到用户数据,头一次写程序,没什么经验,想知道大家都用哪些保持登录状态的方法呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.