我正在通过访问我的Android应用程序SharedPreferences
private val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)`
然后尝试使用
val lat: String = sharedPref.getString("MyKey", "Default")
但是这一行给我一个阅读
"Type mismatch. Required String, found String?"
的错误根据文档,getString方法中的第二个参数表示“如果不存在此首选项,则返回的值。该值可以为null。”
那么拥有默认值又意味着该值可以为null有什么意义呢?我似乎无法获得将要使用的默认值,并且可以使代码正常工作的唯一方法是使用elvis运算符并将代码重写为:
val lat: String = sharedPref.getString("MyKey", "Default") ?: "Default"
看起来很难看。我疯了吗?我想念什么?
最佳答案
可以这样考虑:String
中的每个SharedPreferences
首选项可以存在或而不是,并且可以是null
或而不是。所以代码
val lat: String = sharedPref.getString("MyKey", "Default") ?: "Not Set"
将返回:
Default
。Not Set
(如果存在首选项),但是是null
(创建null
的映射键)value
,则为任何其他null
。