Parse出错:PFObject没有名为'createdAt'的成员

时间:2015-07-17 16:35:13

标签: ios swift parse-platform pfquery collectionview

我坚持这个问题。我已经阅读了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”值,但我无法使其工作。有没有人有想法(如果可能的话,快速解释)它可能是好的。 谢谢!

2 个答案:

答案 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!)

现在它按我的意愿运作。如果您对代码有任何建议,彻底解释或改进,请随时修改和解释。

感谢