Kotpref icon indicating copy to clipboard operation
Kotpref copied to clipboard

Persisting custom objects

Open Miha-x64 opened this issue 8 years ago • 1 comments

Hello again :) What about supporting pref values, which could be presisted into String by custom converter?

object AppState { // client code
    val user by customPref<User?>(default = null, converter = UserConverter)
}

interface PrefConverter<T> { // library code
    fun fromPref(str: String): T
    fun toPref(t: T): String
}

object UserConverter : PrefConverter<User> { // client code
    private val gson = Gson()
    override fun fromPref(str: String) = gson.fromJson(str, User::class.java)
    override fun toPref(t: T) = gson.toJson(t)
}

Many ORMs (Hibernate, GreenDAO, ORMLite, ObjectBox, etc) do this for object's fields, so we can borrow some architectural solutions from them.

Miha-x64 avatar Mar 17 '17 10:03 Miha-x64

I don't have the plan to support custom converter, but your idea is interesting. I'll investigate it. Thanks! :)

chibatching avatar Mar 19 '17 11:03 chibatching