У меня есть приложение, которое загружает параметры UIPickerView из онлайн-файла JSON, в то время как оно может успешно это сделать, это очень медленно, и мне интересно, почему. Консоль печатает файл JSON за 2 секунды, но ему нравится еще 12 секунд, чтобы отобразить его в окне выбора, если я его не перетаскиваю вручную. Как я могу заставить PickerView быстрее загружать параметры без необходимости вручную перемещать их, чтобы показать параметры?UIPickerView медленно обновляется
Вот часть моего кода:
import UIKit
class FirstViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var mypickerview: UIPickerView!
var pickerData: [String] = [String]()
override func viewDidLoad() {
super.viewDidLoad()
/*Begin Loading the list*/
let postEndpoint: String = "https://example.com/json.json"
let session = NSURLSession.sharedSession()
let url = NSURL(string: postEndpoint)!
session.dataTaskWithURL(url, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
guard let realResponse = response as? NSHTTPURLResponse where
realResponse.statusCode == 200 else {
print("Not a 200 response")
return
}
do {
if let ipString = NSString(data:data!, encoding: NSUTF8StringEncoding) {
print(ipString)
let jsonDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
let One = jsonDictionary["One"] as! String
let Two = jsonDictionary["Two"] as! String
let Three = jsonDictionary["Three"] as! String
let Four = jsonDictionary["Four"] as! String
self.mypickerview.delegate = self
self.mypickerview.dataSource = self
self.pickerData = [One, Two, Three, Four]
self.mypickerview.reloadAllComponents()
self.mypickerview.delegate = self;
}
} catch {
print("bad things happened")
}
}).resume()
/*End Loading the list*/
Спасибо! Это исправило это для меня! Обновит щедрость за 22 часа. – Matt
Рад помочь :)) –