gpt4 book ai didi

ios - Swift:试图在一页中只显示用户数据

转载 作者:行者123 更新时间:2023-11-28 08:53:35 25 4
gpt4 key购买 nike

我创建了一个个人资料页面来显示所有用户的博客文章。在我的 viewController 中,我使用了一个 PFQueryTableViewController 来查询用户的博客。我遇到的问题是当我运行我的应用程序以查看当前用户的博客时,我看到当前用户首先按照创建的顺序发布,然后在下面我看到其他人的博客来 self 在 Parse 中创建的类名.当我在此页面上时,该帖子也在重复。我需要在我的代码中做些什么来只显示当前登录用户的博客而不是 Parse 的所有帖子吗?我在下面粘贴了我的代码以获得更好的主意。

import UIKit
import Parse
import ParseUI

class ProfileVC: PFQueryTableViewController {

var profilePage: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 = "BlogPost"
self.textKey = "blogging"
self.pullToRefreshEnabled = true
self.objectsPerPage = 200

}


override func viewDidLoad() {
super.viewDidLoad()

let user = PFObject(className:"BlogPost")
user["writer"] = PFUser.currentUser()




}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}



override func objectsDidLoad(error: NSError?) {
super.objectsDidLoad(error)
profilePage = NSMutableArray(array: objects!)

self.tableView.reloadData()
}

override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)

let query = PFQuery(className: "BlogPost")

if let user = PFUser.currentUser() {
query.whereKey("writer", equalTo: PFUser.currentUser()!.username!)
query.addAscendingOrder("createdAt")
query.findObjectsInBackgroundWithBlock {(objects: [AnyObject]?, error: NSError?) -> Void in

if error == nil{
for object in objects!{
let blog : PFObject = object as! PFObject
self.profilePage.addObject(blog)
}

let array : NSArray = self.profilePage.reverseObjectEnumerator().allObjects
self.profilePage = NSMutableArray(array: array)

self.tableView.reloadData()

}
}
}
}

// MARK: - Table view data source

override func objectAtIndexPath(indexPath: NSIndexPath!) -> PFObject? {
var obj : PFObject? = nil
if(indexPath.row < self.profilePage.count){
obj = self.profilePage[indexPath.row] as? PFObject
}

return obj
}


override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return profilePage.count
}

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row == 0 {
return 110
}
else {
return 90
}
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath?) -> PFTableViewCell {

let cell = tableView.dequeueReusableCellWithIdentifier("PCell", forIndexPath: indexPath!) as! ProfileCell

if let object : PFObject = self.profilePage.objectAtIndex(indexPath!.row) as? PFObject {

cell.WritersName.text = object["writer"] as? String
cell.WritersBlog.text = object["Blog"] as? String
let dateCreated = object.createdAt! as NSDate
let date = NSDateFormatter()
dateFormat.dateFormat = "h:mm a"
cell.timeProfile.text = NSString(format: "%@", date.stringFromDate(dateCreated)) as String

}
return cell
}



// }

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}

}

最佳答案

我发现您的代码存在一些潜在问题。

首先,每次执行查询时,您都将添加到同一个数组。

如果您在执行查询时初始化您的数组,则该数组将仅限于当前查询的结果,并且不包括以前提取的结果。

为此,请将初始化语句添加到您要设置查询的部分。

if let user = PFUser.currentUser() {

profilePage = NSMutableArray() // Reset the profile page array.

query.whereKey("writer", equalTo: PFUser.currentUser()!.username!)
query.addAscendingOrder("createdAt")
...

此外,objectsDidLoad: 中的代码可能会覆盖您通过查询创建的结果。

如果您仍然没有得到正确的结果,请尝试禁用对 profilePage 的分配。

override func objectsDidLoad(error: NSError?) {
super.objectsDidLoad(error)
// profilePage = NSMutableArray(array: objects!)
self.tableView.reloadData()
}

关于ios - Swift:试图在一页中只显示用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33661313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com