【发布时间】:2015-02-12 22:29:47
【问题描述】:
我实际上有一个用用户数据(姓名、图片等)填充的用户单例对象
这不是敏感数据,所以我将它们存储在会话中
当我退出应用并重新启动时,单例初始化是这样的
class var sharedInstance: User {
struct Singleton {
static var instance = User( firstName: NSUserDefaults.standardUserDefaults().objectForKey("firstName") as? String,
lastName: NSUserDefaults.standardUserDefaults().objectForKey("lastName") as? String,
email: NSUserDefaults.standardUserDefaults().objectForKey("email") as? String,
profilPicture: NSUserDefaults.standardUserDefaults().objectForKey("profilPicture") == nil ?
nil : UIImage(data: NSUserDefaults.standardUserDefaults().objectForKey("profilPicture") as NSData))
}
return Singleton.instance
}
所以我想知道它是否存在这样的整洁解决方案? 或者我所做的也许是个好主意?
【问题讨论】:
-
我可能会稍微清理一下,通过删除一些重复的子表达式(例如,
let defaults = NSUserDefaults.standardUserDefaults()),并将其全部放入存储在NSUserDefaults或为用户实现NSCoding并存储它,但是,是的,这是一种合理的方法。 -
让默认值?但是您将在哪里创建它?因为静态变量无法访问属性(并且对我的模型不好^^)。此外,可以将默认值创建为全局变量。你就是这么想的?
-
好吧,我建议不要让它成为单例,真的没有太多收获,只需将其作为您的
AppDelegate的属性并传递它(或者感兴趣的人可以从那里获得它.
标签: ios swift save singleton nsuserdefaults