2015-08-12 4 views
0

У меня есть вопрос техники ... Я получил желаемый результат, используя этот код, но по какой-то причине не кажется, что это «правильный» способ программирования. Может ли кто-нибудь сказать мне, если мой код полностью обоснован или если есть лучший способ сделать это?Неправильное использование функций/глобальных переменных?

Так что мне нужно было получить доступ к измененному значению слайдера и сохранить его на моем бэкэнд (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! 
     } 
    } 
} 

ответ

0

подход лучше бы непосредственно обновить модель данных с новыми данными, как только она изменяется, а затем всегда извлекать данные из модели слоя. Кэширование измененного результата - это не оптимальный способ справиться с этим.

Вы интуитивно поняли, что этот код прав; это приведет к возникновению различных ошибок при обновлении макетов или функций в будущем.

+1

В дополнение к точке Джона вы должны использовать переменную или свойство экземпляра вместо глобального. Избегайте глобальных переменных, когда есть альтернатива. Они вызывают жесткое соединение разных модулей. –

Смежные вопросы