У меня есть вопрос техники ... Я получил желаемый результат, используя этот код, но по какой-то причине не кажется, что это «правильный» способ программирования. Может ли кто-нибудь сказать мне, если мой код полностью обоснован или если есть лучший способ сделать это?Неправильное использование функций/глобальных переменных?
Так что мне нужно было получить доступ к измененному значению слайдера и сохранить его на моем бэкэнд (Parse), но поскольку я программно добавлял ячейки слайдера/таблицы, мне было трудно получить доступ к измененному значению напрямую.
Итак, я создал глобальную переменную с именем TheDistance и установил ее равной текстуре измененного значения слайдера, а затем поместил ее в функцию для ее сохранения.
Правильно ли это подходит для такой задачи?
var theDistance: String = ""
@IBAction func doneButton(sender: AnyObject) {
runSearch()
self.performSegueWithIdentifier("toBrowsePage", sender: self)
}
func runSearch() {
var mySearch = PFObject(className: "Searches")
mySearch["distanceSearches"] = String(theDistance)
mySearch.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in
if success {
}
})
}
func sliderValueChanged(sender: UISlider) {
var slider = sender
let cell = self.theTableView.cellForRowAtIndexPath(NSIndexPath(forRow: slider.tag, inSection: 0)) as UITableViewCell!
for view in cell.subviews {
var theValue = Int(slider.value)
if let label = view as? UILabel {
label.text = "\(theValue)" + "mi."
theDistance = label.text!
}
}
}
В дополнение к точке Джона вы должны использовать переменную или свойство экземпляра вместо глобального. Избегайте глобальных переменных, когда есть альтернатива. Они вызывают жесткое соединение разных модулей. –