在 Parse.com 中,如何在 PFQueryTableViewController 中使用 query.includeKey 和 swift?
in Parse.com, how to use query.includeKey in PFQueryTableViewController with swift?
我正在尝试使用 PFQueryTableViewController 填充 table。
我想使用来自两个 class 的数据,即 Places
和 Details
.
在Places
中,我有两列,placeText
作为string
,pointerToDetails
作为指针。
在Details
中,我有一列,即detailText
。
我想在我已经定义为 PFTableViewCell
.
的同一个 CustomCell
中显示 placeText
和 detailText
不幸的是,在我运行代码之后,我只得到了CustomCell
里面的placeText
。
import UIKit
class TableViewController: PFQueryTableViewController {
// Initialise the PFQueryTable tableview
override init!(style: UITableViewStyle, className: String!) {
super.init(style: style, className: className)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
// Configure the PFQueryTableView
self.pullToRefreshEnabled = true
self.paginationEnabled = false
}
// Define the query that will provide the data for the table view
override func queryForTable() -> PFQuery! {
var query = PFQuery(className: "Places")
query.includeKey("pointerToDetails")
return query
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject) -> PFTableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("CustomCell") as CustomTableViewCell!
if cell == nil {
cell = CustomTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "CustomCell")
}
// Extract values from the PFObject to display in the table cell
cell.name.text = object["placeText"] as String!
cell.detail.text = object["detailText"] as String!
return cell
}
}
detailtext
属性 不会像 includeKey()
可能建议的那样包含在您的对象中,但 pointerToDetails
指向的 Details
对象将包含跟你一起查询Places
对象。
所以要想得到detailText
的值,就得通过指针。换句话说,试试这个:
cell.name.text = object["placeText"] as String!
cell.detail.text = object["pointerToDetails"]["detailText"] as String!
在我从@deadbeef 得到启发后(见答案 1),这是我得到的解决方案:
query.includeKey("pointerToDetails")
正在查询可以通过 object["pointerToDetails"]
访问的对象。
要从 object["pointerToDetails"]
中已经包含的列 detailText
中提取数据,只需执行以下操作:
if let pointer = object["pointerToDetails"] as? PFObject {
cell.detail.text = object["detailText"] as String!
}
这是完整的代码:
import UIKit
class TableViewController: PFQueryTableViewController {
// Initialise the PFQueryTable tableview
override init!(style: UITableViewStyle, className: String!) {
super.init(style: style, className: className)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
// Configure the PFQueryTableView
self.pullToRefreshEnabled = true
self.paginationEnabled = false
}
// Define the query that will provide the data for the table view
override func queryForTable() -> PFQuery! {
var query = PFQuery(className: "Places")
query.includeKey("pointerToDetails")
return query
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject) -> PFTableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("CustomCell") as CustomTableViewCell!
if cell == nil {
cell = CustomTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "CustomCell")
}
// Extract values from the PFObject to display in the table cell
cell.name.text = object["placeText"] as String!
if let pointer = object["pointerToDetails"] as? PFObject {
cell.detail.text = object["detailText"] as String!
}
return cell
}
}
我正在尝试使用 PFQueryTableViewController 填充 table。
我想使用来自两个 class 的数据,即 Places
和 Details
.
在Places
中,我有两列,placeText
作为string
,pointerToDetails
作为指针。
在Details
中,我有一列,即detailText
。
我想在我已经定义为 PFTableViewCell
.
CustomCell
中显示 placeText
和 detailText
不幸的是,在我运行代码之后,我只得到了CustomCell
里面的placeText
。
import UIKit
class TableViewController: PFQueryTableViewController {
// Initialise the PFQueryTable tableview
override init!(style: UITableViewStyle, className: String!) {
super.init(style: style, className: className)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
// Configure the PFQueryTableView
self.pullToRefreshEnabled = true
self.paginationEnabled = false
}
// Define the query that will provide the data for the table view
override func queryForTable() -> PFQuery! {
var query = PFQuery(className: "Places")
query.includeKey("pointerToDetails")
return query
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject) -> PFTableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("CustomCell") as CustomTableViewCell!
if cell == nil {
cell = CustomTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "CustomCell")
}
// Extract values from the PFObject to display in the table cell
cell.name.text = object["placeText"] as String!
cell.detail.text = object["detailText"] as String!
return cell
}
}
detailtext
属性 不会像 includeKey()
可能建议的那样包含在您的对象中,但 pointerToDetails
指向的 Details
对象将包含跟你一起查询Places
对象。
所以要想得到detailText
的值,就得通过指针。换句话说,试试这个:
cell.name.text = object["placeText"] as String!
cell.detail.text = object["pointerToDetails"]["detailText"] as String!
在我从@deadbeef 得到启发后(见答案 1),这是我得到的解决方案:
query.includeKey("pointerToDetails")
正在查询可以通过object["pointerToDetails"]
访问的对象。要从
object["pointerToDetails"]
中已经包含的列detailText
中提取数据,只需执行以下操作:
if let pointer = object["pointerToDetails"] as? PFObject {
cell.detail.text = object["detailText"] as String!
}
这是完整的代码:
import UIKit
class TableViewController: PFQueryTableViewController {
// Initialise the PFQueryTable tableview
override init!(style: UITableViewStyle, className: String!) {
super.init(style: style, className: className)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
// Configure the PFQueryTableView
self.pullToRefreshEnabled = true
self.paginationEnabled = false
}
// Define the query that will provide the data for the table view
override func queryForTable() -> PFQuery! {
var query = PFQuery(className: "Places")
query.includeKey("pointerToDetails")
return query
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject) -> PFTableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("CustomCell") as CustomTableViewCell!
if cell == nil {
cell = CustomTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "CustomCell")
}
// Extract values from the PFObject to display in the table cell
cell.name.text = object["placeText"] as String!
if let pointer = object["pointerToDetails"] as? PFObject {
cell.detail.text = object["detailText"] as String!
}
return cell
}
}