【问题标题】:Data from Parse not loading into PFQueryTableViewController来自 Parse 的数据未加载到 PFQueryTableViewController
【发布时间】:2015-09-11 11:59:11
【问题描述】:

我正在使用 PFQueryTableViewController 尝试将数据加载到 tableview 中。

编辑:下面提到的照片链接:http://i61.tinypic.com/x5626a.png

据我所知,一切设置正确,但在模拟器中运行时,没有出现图像或文本。查询加载了正确数量的单元格:我的“Post”类中​​有 14 个对象,模拟器加载了 14 个表格单元格,但它们都如上图所示。表格视图中还有 2 个标签(我在属性检查器中预先填充了文本),并且该文本也不显示。

编辑 2:

我已经知道如何在单元格中显示文本,但我不知道如何显示图像。这是我在 cellForRowatIndexPath 中的代码:

   override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject!) -> PFTableViewCell? {
    //4
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell1", forIndexPath: indexPath) as! DataCell

    let Postobject1 = object as! Post

    cell.shortDescriptionLabel.text = Postobject1["short_decription"] as? String
    cell.userUsername.text = Postobject1["user2"] as? String

    var thumbnail: PFFile = Postobject1["fichierimage"] as! PFFile
    cell.contentImage.file = thumbnail




    return cell

  }

代码可以正常显示字符串、shortDescriptionLabel 和 userUserName。但是加载图像不起作用。我拿了这个代码:

    var thumbnail: PFFile = Postobject1["fichierimage"] as! PFFile
    cell.contentImage.file = thumbnail

来自 Parse 网站,这里:http://i60.tinypic.com/2ziq0hu.png

但是,当我点击“swift”时,它说没有 swift 示例,所以这是我对代码的翻译。我以前从未在 Obj-C 中编程过,所以也许我翻译错了。有人可以帮忙翻译一下吗?

【问题讨论】:

  • 贴出loadObjects()的代码
  • 调试,当您更新单元格时记录它及其子视图以查看它们包含的内容,然后记录出口以检查它们是否已连接
  • @iRealMe loadObjects() 是(如果我没记错的话)PFQueryTableViewControllers 的内置方法,类似于常规 UItableviews 的 tableView.reloadData()。
  • @Wain 我会尝试这样做并发布结果
  • @Wain 你能看看我的编辑吗?

标签: swift parse-platform pfquerytableviewcontrolle


【解决方案1】:

大约 9 小时后,我终于找到了答案。我将在此处发布所有详细信息,以供将来找到此内容的人使用。希望他们不会像我一样挣扎:)

目标是在 Parse 中从我的类“Post”加载 2 个图像和 2 个字符串,并将它们显示在 PFTableViewCell 中。其中一张图片来自关系数据,来自“Post”类中​​的指针。

这是我的“Post”PFObject 类的代码:

        import Foundation
        import Parse
        import ParseUI
        import UIKit

    class Post: PFObject, PFSubclassing {

@NSManaged var image: PFFile

@NSManaged var short_decription: String?




//1
class func parseClassName() -> String {
    return "Post"
}

//2
override class func initialize() {
    var onceToken: dispatch_once_t = 0
    dispatch_once(&onceToken) {
        self.registerSubclass()
    }
}

override class func query() -> PFQuery? {
    let query = PFQuery(className: Post.parseClassName())
    query.includeKey("from_user")
    query.orderByDescending("createdAt")
   // query.whereKey("early_semester", equalTo: true)
    return query
}

   init(short_decription: String?) {
    super.init()








}

 override init() {
    super.init()



    }

 }

这是我的 tableCell 的代码:

    import UIKit
    import ParseUI
    import Parse

  class DataCell: PFTableViewCell {


@IBOutlet weak var shortDescriptionLabel: UILabel!

@IBOutlet weak var UserProfilePhoto: PFImageView!

@IBOutlet weak var contentImage: PFImageView!
@IBOutlet weak var userUsername: UILabel!



 }

这是我的 PFQueryTableViewController 的代码:

     import UIKit
     import Parse
     import ParseUI
     import Foundation

     class new: PFQueryTableViewController {

// MARK: - Lifecycle
override func viewDidLoad() {
    super.viewDidLoad()
   loadObjects()
}

//1
override func viewWillAppear(animated: Bool) {

    loadObjects()

}

//2
override func queryForTable() -> PFQuery {
    let query = Post.query()
    return query!

}

//3
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject!) -> PFTableViewCell? {
    //4
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell1", forIndexPath: indexPath) as! DataCell



    let PostObject = object as! Post


     // assign label in tablecell text from my "Post" class 
    cell.shortDescriptionLabel.text = PostObject["short_decription"] as? String
    cell.userUsername.text = PostObject["user2"] as? String

    // loading image saved in my "Post" class
    var thumbnail: PFFile = PostObject["fichierimage"] as! PFFile
    cell.contentImage.file = thumbnail
    cell.contentImage.loadInBackground()


    /* loading image that is relational data. My "Post" class has
   a pointer column "from_user" that points to the "User" class,
     and this is loading the profile photos from the User class. 
   this is possible because I used  "query.includeKey("from_user")" in my query.*/

    var profilePhoto: PFFile = PostObject.objectForKey("from_user")!.objectForKey("profilePicture") as! PFFile
    cell.UserProfilePhoto.file = profilePhoto
    cell.UserProfilePhoto.loadInBackground()

    return cell

 }



  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多