我坚持这个问题。我已经阅读了Parse文档(https://parse.com/docs/ios/guide#queries-query-constraints),但它对我没那么大帮助。
错误
当我尝试从PFObject获取“createdAt”或“updatedAt”时,我收到以下错误:
['PFObject']没有名为'createdAt'的成员
守则
这是(缩短)功能:
func loadCheckInData() {
var query = PFQuery(className: "CheckIn")
query.orderByDescending("createdAt")
query.selectKeys(["firstName","lastName","updatedAt","createdAt"])
query.findObjectsInBackgroundWithBlock({
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
println(objects)
// Do something
if let object = objects as? [PFObject] {
println("\(object.createdAt)") <---- Error here
self.CheckedPatients = Array(object.generate())
}
} else {
// Log details of the failure
println("Error: \(error!) \(error!.userInfo!)")
}
})
}
然后我使用以下代码检索“CheckIn”Parse类中的“firstName”,“lastName”(并尝试检索“createdAt”)
func collectionView(cellView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
// Add parse data
if let value = CheckedPatients[indexPath.row]["lastName"] as? String {
cell.cellLabelTwo.text = value
}
if let value = CheckedPatients[indexPath.row]["firstName"] as? String {
cell.cellLabel.text = value
}
if let value = CheckedPatients[indexPath.row]["createdAt"] as? String {
cell.cellDay.text = value
}
return cell
}
我调用函数
override func viewDidAppear(animated: Bool) {
loadCheckInData()
}
事实上,我尝试使用不同的方法来获取“createdAt”值,但我无法使其工作。有没有人有想法(如果可能的话,快速解释)它可能是好的。 谢谢!
答案 0 :(得分:1)
这只是因为updatedAt / createdAt是所有PFObjects的属性,不需要使用密钥检索它,只需将其视为属性。
答案 1 :(得分:1)
由于@SanitLee的答案,我想出了如何获得该物业。我使用解决方案发布我的代码,以便每个人都可以看到它。
<强>解决方案强>
在名为loadCheckInData()
的函数中,我向for object in objects {
方法添加了findObjectsInBackgroundWithBlock
。见下文:
func loadCheckInData() {
var query = PFQuery(className: "CheckIn")
query.orderByDescending("createdAt")
query.findObjectsInBackgroundWithBlock({
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
// Do something
if let objects = objects as? [PFObject] {
for object in objects { // <--- Added
// data stored in the var named "CheckedPatient"
self.CheckedPatients = Array(objects.generate())
}
}
} else {
// ...
}
})
}
然后检索createdAt
函数中的cellForItemAtIndexPath
属性,我改变了:
if let value = CheckedPatients[indexPath.row]["createdAt"] as? String {
cell.cellDay.text = value
}
进入:
var DateVar : PFObject = CheckedPatients[indexPath.row]
var dateFormatter:NSDateFormatter = NSDateFormatter() // Formating
dateFormatter.dateFormat = "EEEE dd MMM HH:mm"
cell.cellDay.text = dateFormatter.stringFromDate(DateVar.createdAt!)
现在它按我的意愿运作。如果您对代码有任何建议,彻底解释或改进,请随时修改和解释。
感谢