PFFile 作为 UIImageView
PFFile as UIImageView
我正在使用 Parse,我有一个名为 "GolfScorecard" 的 class,它有几个键,包括一个 "scorecardImage" 键,它是一个 PFFile。我试图让所有这些高尔夫记分卡信息显示在 tableViewCell 中。我可以获得记分卡 class 的其余信息以显示在单元格中(例如日期、高尔夫球场名称、分数等),但我在显示记分卡图像时遇到了问题。
我正在子classing PFObject。当我查询 class 时,我将对象附加到 "GolfScorecard" (subclass) 的数组,然后包含我从 Parse 查询的所有数据。
这个子class 有一个 属性 "scorecardImage" 是 PFFile 类型。有没有办法使用 "getDataInBackgroundWithBlock" 将 PFFile 转换为 UIImage WITHOUT?问题是当我使用 "getDataInBackgroundWithBlock" 时,图像在错误的单元格中与错误的高尔夫球场名称、分数、日期等不匹配。出于某种原因,当我使用 "getDataInBackgroundWithBlock" 方法。
var scorecardData = [GolfScorecard]()
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:UserLeaderboardCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UserLeaderboardCell
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
cell.dateCellLabel?.text = dateFormatter.stringFromDate(scorecardData[indexPath.row].date)
cell.scoreCellLabel?.text = "\(scorecardData[indexPath.row].score)"
cell.golfCourseCellLabel?.text = scorecardData[indexPath.row].golfCourse
return cell
}
//THIS IS MY QUERY
func loadUserScorecardData() {
scorecardData.removeAll()
let query = GolfScorecard.query()
query!.whereKey("golfer", equalTo: PFUser.currentUser()!)
query!.findObjectsInBackgroundWithBlock { (scorecards: [PFObject]?, error: NSError?) -> Void in
if error == nil {
for object:PFObject in scorecards! {
if let object = object as? GolfScorecard {
self.scorecardData.append(object)
print(self.scorecardData)
print(self.scorecardData.count)
}
}
提前致谢!
-这是我设置单元格图像的代码
let pfImage = scorecardData[indexPath.row].scorecardImage
pfImage.getDataInBackgroundWithBlock({
(result, error) in
if result != nil {
cell.scorecardCellImage.image = UIImage(data: result!)
} else {
print(error)
}
})
我最终解决了这个问题。我将自定义单元格设为 PFTableViewCell,并将图像转换为 PFImageView。然后我使用了下面的代码,它解决了将 PFFile 转换为 UIImage 的问题,因为 PFImageView 可以接受 PFFile。这使得从 Parse 下载 PFFile 更加顺畅。
cell.scorecardCellImage.file = scorecardData[indexPath.row].scorecardImage
cell.scorecardCellImage.loadInBackground()
我正在使用 Parse,我有一个名为 "GolfScorecard" 的 class,它有几个键,包括一个 "scorecardImage" 键,它是一个 PFFile。我试图让所有这些高尔夫记分卡信息显示在 tableViewCell 中。我可以获得记分卡 class 的其余信息以显示在单元格中(例如日期、高尔夫球场名称、分数等),但我在显示记分卡图像时遇到了问题。
我正在子classing PFObject。当我查询 class 时,我将对象附加到 "GolfScorecard" (subclass) 的数组,然后包含我从 Parse 查询的所有数据。
这个子class 有一个 属性 "scorecardImage" 是 PFFile 类型。有没有办法使用 "getDataInBackgroundWithBlock" 将 PFFile 转换为 UIImage WITHOUT?问题是当我使用 "getDataInBackgroundWithBlock" 时,图像在错误的单元格中与错误的高尔夫球场名称、分数、日期等不匹配。出于某种原因,当我使用 "getDataInBackgroundWithBlock" 方法。
var scorecardData = [GolfScorecard]()
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:UserLeaderboardCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UserLeaderboardCell
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
cell.dateCellLabel?.text = dateFormatter.stringFromDate(scorecardData[indexPath.row].date)
cell.scoreCellLabel?.text = "\(scorecardData[indexPath.row].score)"
cell.golfCourseCellLabel?.text = scorecardData[indexPath.row].golfCourse
return cell
}
//THIS IS MY QUERY
func loadUserScorecardData() {
scorecardData.removeAll()
let query = GolfScorecard.query()
query!.whereKey("golfer", equalTo: PFUser.currentUser()!)
query!.findObjectsInBackgroundWithBlock { (scorecards: [PFObject]?, error: NSError?) -> Void in
if error == nil {
for object:PFObject in scorecards! {
if let object = object as? GolfScorecard {
self.scorecardData.append(object)
print(self.scorecardData)
print(self.scorecardData.count)
}
}
提前致谢!
-这是我设置单元格图像的代码
let pfImage = scorecardData[indexPath.row].scorecardImage
pfImage.getDataInBackgroundWithBlock({
(result, error) in
if result != nil {
cell.scorecardCellImage.image = UIImage(data: result!)
} else {
print(error)
}
})
我最终解决了这个问题。我将自定义单元格设为 PFTableViewCell,并将图像转换为 PFImageView。然后我使用了下面的代码,它解决了将 PFFile 转换为 UIImage 的问题,因为 PFImageView 可以接受 PFFile。这使得从 Parse 下载 PFFile 更加顺畅。
cell.scorecardCellImage.file = scorecardData[indexPath.row].scorecardImage
cell.scorecardCellImage.loadInBackground()