允许用户在Swift用户默认设置中创建键和值

时间:2018-09-19 03:46:21

标签: swift nsuserdefaults userdefaults

我目前有我的应用程序向userDefaults中的两个不同键添加值 添加的值是“歌曲名称”和“ BPM”(每分钟的节奏) 这两个键是sName和sBPM。

我要做的是让用户使用歌曲名称和BPM值创建Key。这将允许他们从UiPickerView中选择歌曲,并且该应用可以显示BPM。

基本上。我该如何让用户从文本输入中创建键,而不是给预先创建的键赋值。

希望这是有道理的。我对Swift和一般编程很陌生

3 个答案:

答案 0 :(得分:0)

在这种情况下,您可以将kay设置为SongName并将BPM值设置为其值。像下面的代码

let songs = ["AAA", "BBB", "CCC"]
let BPMValue = 1.5

UserDefaults.standard.set(BPMValue, forKey: songs[index])
UserDefaults.standard.synchronize()

“歌曲”和“值”相互关联,并且键将是唯一的

答案 1 :(得分:0)

考虑到您的UI上有一个UITextField可用于输入Song Name和BMP Value,并且在代码中分别以SongTextField和bmpTextField对其进行引用,当轻按Return键或每次执行操作时,都可以使用以下代码

if let songName = songTextField.text, let bmpValue = bmpTextField.text {
    UserDefaults.standard.set(bmpValue, forKey: songName)
}

答案 2 :(得分:0)

为歌曲的详细信息创建结构

struct songDetails {
   var songName : String
   var songBPM : String
}

现在您可以使用此结构类型创建数组,

var songDetailsArray : [songDetails] = []

您还可以通过从UITextFields中获取输入来在数组中添加新歌曲

songDetailsArray.append(songDetails(songName: songNameTextField.text!, songBPM: bpmTextField.text!))

并使用相同的数组轻松将其添加到UIPIckerView中

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return songDetailsArray[row].songName
}

您可以从UIPickerView中选择一首歌曲,并通过

访问其名称
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
   let songName = songDetailsArray[row].songName
   let correspondingBpm = songDetailsArray[row].songBPM
   print(correspondingBpm)        //this is the corresponding bmp to the seleced song name 
   UserDefaults.standard.set(songName, forKey: "sName")
   UserDefaults.standard.set(correspondingBpm, forKey: "sBPM")
}

在这里,您只为歌曲和相应的BPM创建两个UserDefaults值。

您可以通过

在项目中的任何位置访问此UserDefaults值
let songName = UserDefaults.standard.integer(forKey: "sName")
let songBPM = UserDefaults.standard.integer(forKey: "sBPM")

这可能对您有帮助,您现在可以找到与歌曲名称相对应的BPM