You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无法在ViewModel类中使用DataStore?

问题分析与解决方法

你遇到的问题主要有两个原因,对应解决方法如下:

1. 未通过Context实例访问扩展属性

你声明的recommendationDataStore是Context的扩展属性,必须依托Context对象才能调用。你在ViewModel中直接写recommendationDataStore,系统无法识别,需要改为通过传入的context实例访问:

修改后代码:

class MainViewModel(private val context: Context) : ViewModel() {

    fun collectData(dataToCollect : JSONObject){
        context.recommendationDataStore.updateData {  }
    }
}

2. 扩展属性的可见性限制

你的扩展属性用了private修饰,这意味着它只能在声明该属性的当前文件内访问。如果MainViewModel在另一个文件中,就会无法识别这个属性。根据你的需求调整可见性:

  • 若只需要同模块内访问,改为internal
  • 若需要全局访问,去掉private(默认public)

修改后扩展属性声明:

val Context.recommendationDataStore : DataStore<RecConfigData> by dataStore(fileName = "Recommendations.json", serializer = RecommendationSerializer)
// 或同模块可见:internal val Context.recommendationDataStore...

内容的提问来源于stack exchange,提问作者Rahul Rawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 07:52:01