Разрешение пользователю создавать ключ и значение в пользовательских настройках Swift - PullRequest
0 голосов
/ 19 сентября 2018

В настоящее время мое приложение добавляет значение к двум различным ключам в userDefault. Добавляемыми значениями являются «Имя песни» и «BPM» (ударов в минуту). Это два ключа - sName и sBPM.

Что я хочу сделать, так это позволить пользователю создать ключ с названием песни и значением, являющимся BPM.что позволило бы им выбрать песню из UiPickerView, и приложение могло бы отображать BPM.

В основном.Как разрешить пользователю создавать ключ из текстового ввода, а не присваивать значение предварительно созданному ключу.

Надеюсь, это имеет смысл.Я очень новичок в Swift и программировании в целом

Ответы [ 3 ]

0 голосов
/ 19 сентября 2018

Учитывая, что в вашем пользовательском интерфейсе есть UITextField для ввода как названия песни, так и значения BMP, со ссылкой на него в вашем коде как songTextField и bmpTextField соответственно, когда возвращаемая клавиша нажата или когда вы хотите выполнить операцию, вы можетеиспользуйте код ниже

if let songName = songTextField.text, let bmpValue = bmpTextField.text {
    UserDefaults.standard.set(bmpValue, forKey: songName)
}
0 голосов
/ 19 сентября 2018

создайте Struct для деталей, которые вы хотите для песни

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")
}

Здесь вы создаете только два значения UserDefaults для вашей песни и соответствующий BPM.

И вы можете получить доступ к этому значению UserDefaults в любом месте проекта с помощью

let songName = UserDefaults.standard.integer(forKey: "sName")
let songBPM = UserDefaults.standard.integer(forKey: "sBPM")

Это может помочь вам, теперь вы можете найти BPM, соответствующий названию песни

0 голосов
/ 19 сентября 2018

В этом случае вы можете установить kay как SongName и значение BPM в качестве его значения.Как показано ниже, код

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

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

с композицией и значением, связанным друг с другом, и ключ будет уникальным

...