Я относительно новичок в Swift. Я столкнулся с проблемой при использовании PFQuery в pickerView.Проблема сохранения PFобъектов в массив при использовании pickerView
Я пытаюсь реализовать два компонента pickerView, как показано ниже:
Компонент 0: Компонент 1
"А": "Altivo", "Altrez"
"В": «Беверли», «Бижу»
Выбор «A» из компонента 0 будет показывать «Altivo», «Altrez» в компоненте 1
значения из компонента 1 запрашиваются из Разбираем с использованием значения из компонента 0
Вот мой код:
var condoNameList: [String] = [String]()
var condoPicker = UIPickerView()
var condoAlphabet: [String] = [String]()
private let prefixComponent = 0
private let condoNameComponent = 1
override func viewDidLoad() {
super.viewDidLoad()
condoAlphabet = ["A", "B"]
}
//Start: For condoName picker
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 2
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if component == prefixComponent{
return condoAlphabet.count
}else {
return self.condoNameList.count
}
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if component == prefixComponent {
condoNameList.removeAll()
let query = PFQuery(className: "condodirectory")
let selectedalphabet: String = condoAlphabet[row] as String!
query.whereKey("condoName", hasPrefix: selectedalphabet)
query.findObjectsInBackgroundWithBlock{
(objects:[PFObject]?, error:NSError?)->Void in
if error == nil{
for object in objects!{
//print(object)
let condoName:String = object["condoName"] as! String
self.condoNameList.append(condoName)
}
}
//print("condo Name List is \(self.condoNameList)") //Position 1
}
print("condo Name List is \(self.condoNameList)") //Position 2
condoPicker.reloadComponent(condoNameComponent)
condoPicker.selectRow(0, inComponent: condoNameComponent, animated: true)
}
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if component == prefixComponent{
return condoAlphabet[row]
}else {
return self.condoNameList[row]
}
}
Вопрос находится в положении 1, функция печати может распечатать condoNameList, но в положении 2 печатает пустой массив. В результате список для компонента 1 не отображается в PickerView.
Кто-нибудь знает почему?
Заранее благодарим за помощь.
Ваше положение печати 2 находится за пределами блока. В этом случае печать выполняется перед запросом. Все внутри блока происходит после запроса –