来自 Parse 的数据未加载到 PFQueryTableViewController
Data from Parse not loading into PFQueryTableViewController
我正在使用 PFQueryTableViewController 尝试将数据加载到 table 视图中。
编辑:link 到下面提到的照片:http://i61.tinypic.com/x5626a.png
据我所知,一切都设置正确,但是当 运行 在模拟器中时,没有图像或文本出现。尽管查询加载了正确数量的单元格:我的 "Post" class 中有 14 个对象,模拟器加载了 14 table 个单元格,但它们都如上图所示。 table 视图中还有 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 编程过,所以也许我翻译错了。有人可以帮忙 swift 翻译吗?
我在大约 9 个小时后终于找到了答案。我会 post 在这里为将来找到它的人提供所有详细信息。希望他们不会像我一样挣扎:)
目标是在 Parse 中从我的 class "Post" 加载 2 个图像和 2 个字符串,并将它们显示在 PFTableViewCell 中。其中一张图片来自关系数据,来自 "Post" class.
中的指针
这是我的 "Post" PFObject class 的代码:
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
}
}
我正在使用 PFQueryTableViewController 尝试将数据加载到 table 视图中。
编辑:link 到下面提到的照片:http://i61.tinypic.com/x5626a.png
据我所知,一切都设置正确,但是当 运行 在模拟器中时,没有图像或文本出现。尽管查询加载了正确数量的单元格:我的 "Post" class 中有 14 个对象,模拟器加载了 14 table 个单元格,但它们都如上图所示。 table 视图中还有 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 编程过,所以也许我翻译错了。有人可以帮忙 swift 翻译吗?
我在大约 9 个小时后终于找到了答案。我会 post 在这里为将来找到它的人提供所有详细信息。希望他们不会像我一样挣扎:)
目标是在 Parse 中从我的 class "Post" 加载 2 个图像和 2 个字符串,并将它们显示在 PFTableViewCell 中。其中一张图片来自关系数据,来自 "Post" class.
中的指针这是我的 "Post" PFObject class 的代码:
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
}
}