允许用户在 Swift userdefaults 中创建键和值
Allowing User to Create a Key and Value in Swift userdefaults
我目前让我的应用向 userDefaults 中的两个不同键添加一个值
添加的值是 "Song Name" 和 "BPM"(每分钟节拍)
这两个键是 sName 和 sBPM。
我想要做的是让用户用歌曲名称和值为 BPM 来创建 Key。这将允许他们 select 来自 UiPickerView 的歌曲并且该应用程序可以显示 BPM。
基本上。我如何让用户从文本输入中创建一个键,而不是为预先创建的键赋值。
希望这是有道理的。我对 Swift 和一般编程还很陌生
在这种情况下,您可以将 kay 设置为 SongName 并将 BPM 值设置为它的值。喜欢下面的代码
let songs = ["AAA", "BBB", "CCC"]
let BPMValue = 1.5
UserDefaults.standard.set(BPMValue, forKey: songs[index])
UserDefaults.standard.synchronize()
有了Song和value的关联,key就会是唯一的
考虑到您的 UI 上有一个用于输入歌曲名称和 BMP 值的 UITextField,当 return Key is Tapped 或任何时候你想执行操作,你可以使用下面的代码
if let songName = songTextField.text, let bmpValue = bmpTextField.text {
UserDefaults.standard.set(bmpValue, forKey: songName)
}
为歌曲的详细信息创建结构
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
}
您可以 select 来自 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
我目前让我的应用向 userDefaults 中的两个不同键添加一个值 添加的值是 "Song Name" 和 "BPM"(每分钟节拍) 这两个键是 sName 和 sBPM。
我想要做的是让用户用歌曲名称和值为 BPM 来创建 Key。这将允许他们 select 来自 UiPickerView 的歌曲并且该应用程序可以显示 BPM。
基本上。我如何让用户从文本输入中创建一个键,而不是为预先创建的键赋值。
希望这是有道理的。我对 Swift 和一般编程还很陌生
在这种情况下,您可以将 kay 设置为 SongName 并将 BPM 值设置为它的值。喜欢下面的代码
let songs = ["AAA", "BBB", "CCC"]
let BPMValue = 1.5
UserDefaults.standard.set(BPMValue, forKey: songs[index])
UserDefaults.standard.synchronize()
有了Song和value的关联,key就会是唯一的
考虑到您的 UI 上有一个用于输入歌曲名称和 BMP 值的 UITextField,当 return Key is Tapped 或任何时候你想执行操作,你可以使用下面的代码
if let songName = songTextField.text, let bmpValue = bmpTextField.text {
UserDefaults.standard.set(bmpValue, forKey: songName)
}
为歌曲的详细信息创建结构
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
}
您可以 select 来自 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