Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用之前使用json GET创建的数组填充UiPickerView(我得到的是“?”而不是数据)_Arrays_Json_Swift_Button_Uipickerview - Fatal编程技术网

Arrays 使用之前使用json GET创建的数组填充UiPickerView(我得到的是“?”而不是数据)

Arrays 使用之前使用json GET创建的数组填充UiPickerView(我得到的是“?”而不是数据),arrays,json,swift,button,uipickerview,Arrays,Json,Swift,Button,Uipickerview,当我试图在UiPickerView中显示数组时遇到了一个问题,我在控制台中检查来自json的数组数据,数据就在那里,但是当我尝试填充选择器时,数组的每一行都会得到“?”1 这是我的密码 import UIKit 类ViewController:UIViewController、UIPickerViewDataSource、UIPickerViewDeleteGate{ @IBOutlet var NameLabel: UILabel! @IBOutlet var myPicker: UIPi

当我试图在UiPickerView中显示数组时遇到了一个问题,我在控制台中检查来自json的数组数据,数据就在那里,但是当我尝试填充选择器时,数组的每一行都会得到“?”1

这是我的密码

import UIKit
类ViewController:UIViewController、UIPickerViewDataSource、UIPickerViewDeleteGate{

@IBOutlet var NameLabel: UILabel!

@IBOutlet var myPicker: UIPickerView!

var pickerData = [String]()




@IBAction func Butonio(sender: AnyObject) {

    var urlPath: String = "link with json encode response"
    //self.NameLabel.text = urlPath;

    var url: NSURL = NSURL(string: urlPath)!
    var request1: NSURLRequest = NSURLRequest(URL: url)
    let queue:NSOperationQueue = NSOperationQueue()
    NSURLConnection.sendAsynchronousRequest(request1, queue: queue, completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
        var err: NSError?
       // println(data)


        if let json =  NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:
        &err) as? NSArray{

        if let descripcion = json[0]["descripcion"] as? NSString {

            let descripcion2 = NSUUID().UUIDString

            var descripcion3 = UIDevice.currentDevice().identifierForVendor.UUIDString
            let stringo : Int = json.count
             println( "el nmuero es \(stringo)")

           var stringc = ""
           // NSArray colors = [[Int:String]]()
            //var pickerData = [String]()

           var j = 0
            while j == 0{

                if self.pickerData.isEmpty{
                j=1
                } else {
                self.pickerData.removeLast()
                }
            }

                for i in  0..<stringo{
                if let descr =  json[i]["descripcion"] as? NSString{
               //println( "la desc es \(descr)")
               //colors[i] = descr
                //var colors: [Int:String] = [i : descr]
                self.pickerData.append(descr)
                stringc += self.pickerData[i]+" , "
               println( "la desc/  es \(self.pickerData[i])")
                    }

            }

            self.myPicker.dataSource = self
            self.myPicker.delegate = self


            self.myPicker.reloadAllComponents()



            println( "la desc/total  es \(stringc)")

            return


            }


        }

    })



}


//MARK: - Delegates and data sources
//MARK Data Sources

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return self.pickerData.count
}


//MARK Delegate
func pickerView(pickerView: UIPickerView, tittleForRow row: Int, forComponet component: Int) -> String!{
     //println(row)
    return self.pickerData[row]

}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, forComponet component: Int) {
   //println(row)
  println( "la desc/  es \(self.pickerData[row])")
    // self.NameLabel.text = self.pickerData[row]
}

}

委托和数据源函数出现了一些问题,这是正确的使用方法

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{
    return 1
}

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
    return pickerData.count
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
    return pickerData[row]
}

func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int){
    NameLabel.text = pickerData[row]
    self.view.endEditing(true)
}

除此之外,我无法使最后一部分正常工作func PickerView:UIPickerView,didSelectRow row:Int,forComponet component:Int{println la desc/es self.pickerData[row]},但我不知道它是否正常工作,因为我无法使UIPickerView正常工作,或者在某些方面出错