【问题标题】:iOS Swift UserDefaults equivalent in Android KotlinAndroid Kotlin 中的 iOS Swift UserDefaults 等效项
【发布时间】:2017-12-19 10:23:35
【问题描述】:

我习惯于用 Swift 编写 iOS 应用程序,并使用 UserDefaults 进入安全状态。如何使用 Kotlin 在 Android 中做类似的事情?

例如,下面是我在 Swift 中设置用户数据和登录状态的方法。

// Swift example; how is this possible with Kotlin?
UserDefaults.standard.set(value, forKey: MyKeys.userid.rawValue)
UserDefaults.standard.synchronize()

【问题讨论】:

标签: android kotlin


【解决方案1】:

Android 中 UserDefaults 的等价物是 SharedPreferences

要首先使用 SharedPreferences,您可以通过以下方式获取 SharedPreferences 对象:

val sharedPreferences = getSharedPreferences(name:String!, mode: Int)

如果您在一个活动中,您可以直接调用该方法,因为活动从上下文继承,否则您需要一个上下文对象来调用 getSharedPreferences。名称可以是您喜欢的任何名称,您可以找到更多的模式here

接下来要在 sharedPreferences 中保存数据,调用方法 sharedPreferences.edit() 返回一个 Editor 对象,将数据放入编辑器并保存调用 commit() 的更改,例如:

sharedPreferences.edit().putInt(key: String!, value: Int).commit()

如您所见,我们已将一个整数放入编辑器,然后我们调用了 commit()。

要获取我们保存的数据非常简单,我们只需调用相应的 get 方法到例如类型

sharedPreferences.getInt(key: String!, defaultValue: Int)

【讨论】:

    【解决方案2】:
    const val SHARED_PREF = "sharedPreferences"
    val sharedPreferences = getSharedPreferences(SHARED_PREF, Context.MODE_PRIVATE)
             <----- Start of Setting the value ----->
            val userLoggedIn = sharedPreferences.edit()
            // setting it as a boolean
            userLoggedIn.putBoolean("isloggedin", true)
    
            // setting it as a string
           userLoggedIn.putString("isloggedin", "1")
    
           // setting it as an Int
           userLoggedIn.putInt("isloggedin", 1)
    
           // committing or applying is the last step to save, without this those data above wont be saved. commit returns a boolean, apply does not
            userLoggedIn.commit() or userLoggedIn.apply()
    
                <----- End Of Setting the value -----/>
    ---------------------------------------------------------------------------
                 <----- Start of Retrieving the value ----->
           // Retrieving it as String
           //"nil" below is a default value, just incase "isloggedin" as a string does not exist, it returns "nil"
           val retrieveIsLoggedin =  sharedPreferences.getString("isloggedin", "nil")
    
           // Retrieving it as an Int
          //0 below is a default value, just incase "isloggedin" as an int does not exist, it returns 0
           val retrieveIsLoggedin =  sharedPreferences.getInt("isloggedin", 0)
    
           // Retrieving it as an Boolean
          //false below is a default value, just incase "isloggedin" as a boolean does not exist, it returns false
           val retrieveIsLoggedin=  sharedPreferences.getBoolean("isloggedin", false)
    
    
                 <----- End of Retrieving the value ----->
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 2011-10-29
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-05
      相关资源
      最近更新 更多