- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 TableView 子类为 PFQueryTableViewController,我想知道如何从 Parse 检索用户帖子的库存。我在接收用户数据并用我的代码显示时遇到问题。我需要在 queryForTable 中编辑某些内容、更改解析或更改代码吗?
这是我的 ProfileViewController:
import UIKit
import Parse
import ParseUI
class ProfileViewController: PFQueryTableViewController{
var profilePosts:NSMutableArray! = NSMutableArray()
override init(style: UITableViewStyle, className: String!) {
super.init(style: style, className: className)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.parseClassName = "Test"
self.textKey = "postMessage"
self.pullToRefreshEnabled = true
self.objectsPerPage = 200
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func queryForTable() -> PFQuery {
let query = PFQuery(className: "Test")
query.whereKey("username", equalTo: PFUser.currentUser()!)
query.limit = 200;
return query
}
// MARK: - Table view data source
override func objectAtIndexPath(indexPath: NSIndexPath!) -> PFObject? {
var obj : PFObject? = nil
if(indexPath.row < self.objects!.count){
obj = self.objects![indexPath.row] as? PFObject
}
return obj
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return profilePosts.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath?, object:PFObject!) -> PFTableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("PCell", forIndexPath: indexPath!) as! ProfileCell
if let profilePost : PFObject = self.profilePosts.objectAtIndex(indexPath!.row) as! PFObject {
cell.NameProfile.text = object["account"] as? String
cell.messageProfile.text = object["postMessage"] as? String
let dateUpdated = object.createdAt! as NSDate
let dateFormat = NSDateFormatter()
dateFormat.dateFormat = "MMM d, h:mm a"
cell.timeProfile.text = NSString(format: "%@", dateFormat.stringFromDate(dateUpdated)) as String
cell.messageProfile.numberOfLines = 0
let likeScore = object[("count")] as! Int
cell.likeScoreProfile.text = "\(likeScore)"
let replyscore = object["replies"] as! Int
cell.replyScoreProfile.text = "\(replyscore) replies"
cell.messageProfile.text = profilePost.objectForKey("postMessage") as? String
if let profilePic = object["profilePhoto"] as? PFFile {
let imageView = cell.profilePhoto as PFImageView
imageView.image = UIImage(named: "profileImg")
imageView.file = profilePic
imageView.loadInBackground(nil)
}
return cell
}
最佳答案
您永远不会将您的profilePosts
分配给从解析返回的对象
。您有两种选择来解决此问题。一种是坚持使用对象的默认解析实现,这样您就可以在需要数据库对象之一时使用objects
。另一种方法是坚持使用 profilePosts
数组并将其分配到 objectsDidLoad
中,这样您就不必更改除此之外的任何代码。否则,在 numberOfRowsInSection
等方法中,您需要返回 objects!.count
。
如果您决定使用自己的 profilePosts
数组,您将需要执行以下操作:
import UIKit
import Parse
import ParseUI
class ProfileViewController: PFQueryTableViewController{
var profilePosts:NSMutableArray! = NSMutableArray()
override init(style: UITableViewStyle, className: String!) {
super.init(style: style, className: className)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.parseClassName = "Test"
self.textKey = "postMessage"
self.pullToRefreshEnabled = true
self.objectsPerPage = 200
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func objectsDidLoad(error: NSError?) {
super.objectsDidLoad(error)
profilePosts = NSMutableArray(array: objects!)
self.tableView.reloadData()
}
override func queryForTable() -> PFQuery {
let query = PFQuery(className: "Test")
query.whereKey("username", equalTo: PFUser.currentUser()!.username)
query.limit = 200;
return query
}
// MARK: - Table view data source
override func objectAtIndexPath(indexPath: NSIndexPath!) -> PFObject? {
var obj : PFObject? = nil
if(indexPath.row < self.profilePosts.count){
obj = self.profilePosts[indexPath.row] as? PFObject
}
return obj
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return profilePosts.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath?) -> PFTableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("PCell", forIndexPath: indexPath!) as! ProfileCell
if let object : PFObject = self.profilePosts.objectAtIndex(indexPath!.row) as? PFObject {
cell.NameProfile.text = object["account"] as? String
cell.messageProfile.text = object["postMessage"] as? String
let dateUpdated = object.createdAt! as NSDate
let dateFormat = NSDateFormatter()
dateFormat.dateFormat = "MMM d, h:mm a"
cell.timeProfile.text = NSString(format: "%@", dateFormat.stringFromDate(dateUpdated)) as String
cell.messageProfile.numberOfLines = 0
let likeScore = object[("count")] as! Int
cell.likeScoreProfile.text = "\(likeScore)"
let replyscore = object["replies"] as! Int
cell.replyScoreProfile.text = "\(replyscore) replies"
cell.messageProfile.text = profilePost.objectForKey("postMessage") as? String
if let profilePic = object["profilePhoto"] as? PFFile {
let imageView = cell.profilePhoto as PFImageView
imageView.image = UIImage(named: "profileImg")
imageView.file = profilePic
imageView.loadInBackground(nil)
}
return cell
}
请注意我如何更改 cellForRowAtIndexPath
以使用从 profilePosts
获取的对象,然后如何覆盖 objectsDidLoad
并分配 PFQueryTableView
objects
属性添加到您的 profilePosts
数组中。您可能想要这样做的原因之一是,通过拥有自己的 Parse 对象的托管副本,您可以执行诸如带有动画的插入或删除之类的操作,而常规 objects
属性不允许您执行这些操作。希望这对您有所帮助,如果您有更多问题,请告诉我。
编辑2根据您对更具体问题的评论,我建议您编辑原始问题以指定您询问的是如何获取当前用户的对象,而不是询问要使用哪种实现。不过,我将上面的代码保留在那里,因为 queryForTable
方法已被修改以显示您需要执行哪些操作才能满足您的查询需求。它还确实向那些寻求如何在遇到问题时正确检索对象的人展示。
关于ios - Swift-通过 PFQueryTableViewController 创建 Twitter 或 Instagram 等个人资料页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33487474/
简单:我想要用屏幕的宽度和高度计算图片的大小以保持宽高比,类似于9gag应用程序。 如何在PFQueryTableViewController中制作单元格的动态高度,在我的单元格中,我在自定义单元格中
我想使用 PFQueryTableViewController 显示来自 Parse.com 的联系人列表,但是我可以显示来自 Parse.com 的数据。现在,我在 Parse.com 的其他列中添
所以我正在使用 Swift 2 和 Xcode 7 创建一个应用程序,并使用 Parse 作为我的后端服务。我有两个 View Controller ,一个用于显示 PFObject 列表的 PFQu
我有一个 pfquery tableview Controller ,该 Controller 在类中包含许多 pfobject,这些对象正在加载到我的 pfquerytableviewcontrol
我正在尝试对 PFQuery tableview Controller 设置限制,但它不起作用。我正在尝试使其加载 1 个单元格,然后在分页后加载另一个单元格,然后加载另一个单元格。 这是我的代码。
我想要一个包含两个部分的 PFQueryTableViewController: 第 1 部分:显示查询的 PFObjects(地址簿中正在使用该应用程序的联系人) 第 2 部分:显示数组的对象(地址
我正在将来自 User 类的用户数据从 Parse 加载到 PFQueryTableViewController 中。用户类代表来自 Facebook 的数据。现在,我不想将数据加载到当前登录用户的
我有一个 PFQueryTableViewController,我想向 tableview 添加部分,我这样尝试: - (PFQuery *)queryForTable { PFQuery *qu
我的应用程序中有一个 PFQueryTableViewController。如果它是 Controller 的 Root View ,那很好。但是,如果我将它推到另一个 View ,就会有一条奇怪的线
我有一个关于如何拦截 PFQueryTableViewController 上的错误消息的问题。基本上,我想重写 PFQueryTableViewController 中的一个方法,以便在执行查询时出
在将所有内容移至 Heroku 之后,我正在使用开源 Parse 服务器更新我的 Parse 应用程序。我的应用程序有一个部分带有 PFQueryTableViewController。几年来,我禁用
用 PFQueryTableViewController 替换我的 TableViewController 时遇到了一些麻烦,但我通过拉动刷新和分页得到了它。但是,我无法让缓存工作(在 .m 文件的最
新的 Parse Sdks 是否支持 PFQueryTableViewController? 因为我不断收到使用未声明类型 PFQueryTableViewController 的错误。为什么会这样?
我正在使用 Parse.com 编写一个 iOS 应用程序来与服务器交互。 我已经下载并安装了 SKD,正确添加了所有框架,一切正常,直到出现 PFQueryTableViewController。当
我正在按照在线教程使用 Parse 作为后端来创建照片共享应用程序。我已经完成了两次教程,两次都从头开始创建应用程序,但仍然在同一位置出现相同的错误。我四处寻找解决方案,但仍然没有运气。 我正在使用
我的目标是使用 PFQueryTableViewController 设置分页。我会对以下解决方案之一感到满意: 1、表格 View 自动分页。例如,如果 objectsPerPage = 10,当实
我在解析时创建的数据库有问题。我有一张表格,显示了不同地方的里程数(一旦你从 DB 下载了列表),问题是我会订购它以获得向上的距离,但我不知道该怎么做。 - (void)viewDidLoad {
我有一个 PFQueryTableViewController 类型的 TableView ,并从 Parse 云获取其值。表格 View 工作正常,但现在我需要允许用户: 选择一行 在 Parse-
一旦我更新了 Parse SDK 并启用了本地数据存储,我的应用程序中的 PFQueryTableViewControllers 就开始卡在“加载中”。如果我禁用本地数据存储,它们将再次工作。当前将
我正在使用 PFQueryTableViewController,它应该只在用户按下按钮后才加载对象。问题出在 - (PFQuery *)queryForTable 方法上。 这是我的代码: - (P
我是一名优秀的程序员,十分优秀!