swift parse查询如何为每个用户名获取第一个createdAt?

时间:2015-08-21 13:24:47

标签: swift parse-platform

如何为每个用户名获取第一行createdAt?

例如:backend看起来像这样

objectId-   username - photo   -  createdAt

5135Aer    -   name1      - image   -  2015-08-21

R35AAA     -   name6      - image   -  2015-08-21

G7356W     -   name3      - image   -  2015-08-20

E355B      -   name1      - image   -  2015-08-20

所以我希望查询将占用所有行并跳过在2015-08-20最后一个创建的name1因为这个旧行我只想为每个用户创建新的createdAt行。

let query = PFQuery(className: "test")
        query.whereKey("receivers", equalTo: PFUser.currentUser()!.username!)
        query.orderByDescending("createdAt")
        query.findObjectsInBackgroundWithBlock {
            (objects, error) -> Void in

            if error == nil {

                self.createdAtArray = objects!
                print(objects!.count)

我已尝试过这个查询,但它会占用旧的createdAt,我只想为每个用户创建新的createdAt,是的,我已设置limit to = 1,但它会显示不是每个用户的最后一条记录!它只显示一个结果。

1 个答案:

答案 0 :(得分:1)

因此,从现在开始每20分钟,我会要求提供最近的对象,因此如果您想在50分钟或更长时间后查询图像,只需更改时间戳的值。

let query = PFQuery(className: "test")
query.whereKey("receivers", equalTo: PFUser.currentUser()!.username!)
 query.orderByDescending("createdAt")
 var timeStamp = NSDate(timeIntervalSinceNow: -1200)
 query.whereKey("createdAt", greaterThanOrEqualTo: timeStamp)
 query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in
if error == nil
{
    if let objects = objects as? [PFObject]
    {

        for one in objects
        {
            var Getimage = one["image"] as! PFFile
             Getimage.getDataInBackgroundWithBlock({ (data:NSData?, error:NSError?) -> Void in

                var image = UIImage(data: data!)
                // you have the image now
                createdAtArray.addObject(image!)

            })

          }
      }
  }

 }

第二个选项:要从解析中获取最后一个对象** getFirstObject方法

 func secondQuery(arraydetails:NSMutableArray){
   var query = PFQuery(className: "")
  query.orderByDescending("createdAt")
  query.limit = 1
  query.getFirstObjectInBackgroundWithBlock { (object:PFObject?, error:NSError?) -> Void in

    if error == nil
    {
        var detail = object?.objectForKey("text") as! String
         arraydetails.addObject(detail)
    }

   }

  }