我有每次被設定的時間用戶寫入SharedPreferences類:忽略setter和設置屬性直接
class UserManager @Inject constructor(
val prefs: SharedPreferences,
val jsonAdapter: JsonAdapter<User>
) {
companion object {
val USER = "user"
}
var user: User = User()
set(value) {
field = value
prefs.edit().putString(USER, jsonAdapter.toJson(user)).apply()
}
init {
val userString = prefs.getString(USER, null)
if (userString != null) {
user = jsonAdapter.fromJson(userString)
}
}
}
問題:如果用戶在初始化模塊組,它調用的二傳手並將剛剛從共享首選項獲得的用戶寫入共享的首選項。
問題1:如何直接從init塊設置屬性?
問題2:爲什麼我在定義自定義設置器時必須初始化用戶,但在使用默認設置器時可以省略初始化?
我測試了這一點,它的工作原理卻II找到基里爾的解決方案的更多可讀。仍然有一個upvote。 – Kuno