【问题标题】:Firebase Swift 3 Loading Profile Images Into TableView with NSURLSessionFirebase Swift 3 使用 NSURLSession 将配置文件图像加载到 TableView
【发布时间】:2017-01-18 13:01:01
【问题描述】:

我正在按照教程加载图像 URL 并将它们附加到一个数组中,以便使用以下代码块在每个用户的单元格 UITableView 中显示用户个人资料图像:

let url = NSURL(string: urlString)
        NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) in

        //download hit an error so lets return out
        if error != nil {
            print(error)
            return
        }

        dispatch_async(dispatch_get_main_queue(), {
            //"profilePics" is my array of UIImages made as a global var
            self.profileImages.append(UIImage[data!])
        })

    }).resume()

但由于某种原因,“NSURLSession”在我编程时没有作为建议出现并且它返回错误,所以我将所有内容从“NSURL...”更改为简单的“URL...”:

                //Grabbing images from db
                print("starting get image block : ")
                    let url = URL(string: profileImageURL)
                    URLSession.shared.dataTask(with: url!, completionHandler: {(data, response, error) in
                        print("grabbing image: ")       //Test line for monitor
                        print(String(describing: data)) //Test line for monitor : returns "nil"
                        if error != nil{
                            print(error!)
                            return
                        }

                        DispatchQueue.main.async {
                            //"profilePics" is my array of UIImages made as a global var
                            self.profilePics.append(UIImage(data: data!))
                            print("Image appended")
                        }

                 }).resume()

                 // grabbing images from db end

但是每次我运行它时,我都会得到一个 nil 的数据,并且它永远不会附加到我的数组中。有人可以解释我错过了什么吗?这是我第一次尝试使用 Firebase。

【问题讨论】:

标签: ios uitableview firebase swift3 nsurlsession


【解决方案1】:

我实际上发现了问题所在,我不想只是删除帖子,以防其他人可能正在寻找相同问题的解决方案。事实证明,URLSession 工作正常,所以找不到“NSURLSession”不是问题。但是,一旦我开始工作,配置文件图像只会在重新加载我的 uitableview 后加载。一旦我移动了我的 tableview.reload(),它就会一直工作,这是我的 Swift 3 工作代码:

//This method grabs all user data for each user & adds them to an 
//array to be displayed in a uitableview
 func getUsersData(){
    FIRDatabase.database().reference().child("users").observe(.childAdded, with: {(snapshot) in

        if let dictionary = snapshot.value as? [String:AnyObject]{

            print(snapshot.childrenCount)

            if (snapshot.childrenCount > 2) {

                self.users.append(dictionary["name"] as! String)

                if !(dictionary["subjects"]?.isEqual(""))!{

                    self.subjects.append(dictionary["subjects"] as! String)

                }

                else{

                    self.subjects.append("N/A")

                }

                if !(dictionary["location"]?.isEqual(nil))!{

                    self.states.append(dictionary["location"] as! String)

                }

                else{

                    self.states.append("N/A")

                }

                self.ratings.append("4.1")
                if let profileImageURL = dictionary["userPhoto"] {

                    let url = URL(string: profileImageURL as! String)
                    URLSession.shared.dataTask(with: url!, completionHandler: {(data, response, error) in

                        if error != nil{

                            print(error!)
                            return

                        }

                        DispatchQueue.main.async {

                            self.profilePics.append(UIImage(data: data!))
                            print("Image appended")

                        }

                        // This line is required to reload with new data in tableview array data from db

                        DispatchQueue.main.async{

                            self.browseUITableView.reloadData()

                        }

                    }).resume()

                }
                // grabbing images from db end
            }
        }
    })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2017-11-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多