gpt4 book ai didi

android - 尝试将 mutableListOf 存储到 SharedPreferences 但无法设置默认值

转载 作者:行者123 更新时间:2023-11-29 00:51:59 25 4
gpt4 key购买 nike

最终我试图在共享首选项中存储一个 Int 数组,但我知道 Kotlin 不支持它。因此,我使用此处的方法将 Int 数组转换为 String 数组:

How can I store an integer array in SharedPreferences?

我的问题是我很难为 getStringSet 方法设置一个默认值:

private fun loadIntScoreArray() {
val prefs = getSharedPreferences(SHARED_PREFS, Context.MODE_PRIVATE)
//TODO: Load the String array
var default = emptyList<String>()
avgScoreArrayString = prefs.getStringSet(AVG_SCORE_ARRAY, default)
}

但是 default 不是 prefs.getStringSet(AVG_SCORE_ARRAY, default) 行中可接受的对象。该错误令人困惑,因为它看起来自相矛盾:

必需:MutableList

找到:(可变)集合!

必需:(可变)设置!

找到:MutableList

最佳答案

您需要知道的事情很少。从 API 11 开始,您只能将普通对象或集合存储到共享首选项。您可以将您的列表转换为集合,但它可能是有损转换,因为您的列表中包含重复项。

如果你想使用集合,你应该这样调用它:

//to get
prefs.getStringSet(AVG_SCORE_ARRAY, emptySet<String>()))
//to set
prefs.edit().putStringSet(key, AVG_SCORE_ARRAY)

另一种方法是使用连接操作将数组连接到单个字符串。这是给你的文档https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/join-to.html

说实话,这两种方式都不是完美的解决方案。如果它是生产应用程序,我建议使用持久性库,如 Room、Realm 等。希望对您有所帮助。

编辑。如果你百分百确定你将存储 5 个整数(并且它在不久或遥远的将来都不会改变),那么使用数据库可能有点矫枉过正。我建议使用连接到单个字符串并将其存储为单个字符串或仅存储 5 个独立的 int 值。没有必要将简单的事情复杂化。

关于android - 尝试将 mutableListOf<String> 存储到 SharedPreferences 但无法设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58635608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com