【发布时间】:2017-01-27 10:16:07
【问题描述】:
我想知道是否有任何方法可以观察单例类的任何属性的变化
在我的情况下,使用 Realm 我有类似的东西
class User: Object {
dynamic var name:String = ""
dynamic var email:String = ""
dynamic var id:String = ""
dynamic var picURL:String = ""
dynamic var pic:Data = Data()
static let currentUser = User()
{
didSet
{
try! realm.write {
realm.add(currentUser, update: true)
}
}
}
}
我想要实现的是我希望在我的应用程序中只有一个用户对象,并且只要它的任何属性被修改,我都想将它保存到 Realm。
但是,上面的示例显示错误
'let' 声明不能观察属性
你会如何处理它?你认为我的想法是让 Realm 对象单例并在任何属性更改时更新它是一个好主意吗?
我想知道拥有一个由 Realm 持久化的类的单例对象是否真的有意义。
【问题讨论】:
-
不清楚你想要实现什么:要么可以修改
currentUser,那么这应该是var,而不是let,或者不能修改currentUser(到目前为止,因为它是一个let常量),但在这种情况下,设置它时不需要监听器。 -
@AndreasOetjen 你能具体说明我的解释中哪一部分不清楚吗?
-
@AndreasOetjen 请注意,如果我将其修改为 var,它将不再是单例
-
如果你想要一个单例,你应该为currentUser实现一个getter,并创建一个私有初始化器private。