I am trying to wait to retrieve data from my firebase database and store it in a dictionary. I am trying to use a semaphore to do so, but I am getting a NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9806) error which I tried to fix by changing my info.plist. But I had no luck with it. Is this not the way to go?
import UIKit
import Firebase
var done = false
class ListViewController: UIViewController, UICollectionViewDelegate {
let rootref = FIRDatabase.database().reference()
var item_dict = Dictionary<String,[String]>()
var item_img_dict = Dictionary<String,[String]>()
let semaphore = DispatchSemaphore(value: 0)
let queue = DispatchQueue.global()
override func viewDidLoad() {
super.viewDidLoad()
self.title = "hello!"
print("before calling function==========================")
print("go in to request")
DispatchQueue.global(qos: .userInitiated).async{
self.rootref.child("items").observeSingleEvent(of: .value, with: { (snapshot) in
print("DOING SOMETHING IN FUNCTION !!!!")
for(type_2_container,item_list) in snapshot.value! as! Dictionary<String, AnyObject>{
for(uid_container, item_detail_container) in item_list as! Dictionary<String, AnyObject>{
for(uid, item_detail) in item_detail_container as! Dictionary<String, AnyObject>{
let item_detail_dict = item_detail as? Dictionary<String,String>
if self.item_dict.index(forKey: uid as! String) != nil{
self.item_dict[uid]?.append(item_detail_dict!["item_name"]!)
self.item_img_dict[uid]?.append(item_detail_dict!["item_image"]!)
}else{
self.item_dict[uid] = [item_detail_dict!["item_name"]!]
self.item_img_dict[uid] = [item_detail_dict!["item_image"]!]
}
}
}
}
self.semaphore.signal()
})
}
self.semaphore.wait()
print(self.item_dict)
print(self.item_img_dict)
}