2015-08-21 22 views
0

我如何獲得每個用戶名的createdAt第一行?swift解析查詢如何獲取每個用戶名的第一個createdAt?

例如:後端看起來像這樣

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 

所以我想查詢將採取所有行,並跳過名1這是createdAt 2015年8月20日最後一個,因爲這個舊行我只是想新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,但它會顯示最後一條記錄沒有爲每個用戶!它只顯示一個結果。

+0

你想要做什麼,所以你想只爲每個用戶創建新的數據? right – Lamar

+0

@Lamar我想要像上次顯示圖片,消息等一樣獲取最新的用戶更新,我不希望他們的名字重複,我只想爲每個用戶創建一個第一行的createdAt。你能幫忙嗎? – Salah

回答

1

因此,從現在開始每隔20分鐘我要求給出最近的對象,所以如果您希望在50分鐘或更長時間後查詢圖像,只需更改timestamp的值即可。

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) 
    } 

    } 

    } 
+0

謝謝,但我不希望這樣的用戶名重複,我只是想爲每個用戶名一行我不希望它重複,我不想要計時器,我只是想第一createdAt爲每個用戶沒有重複,請你幫忙嗎? – Salah

+0

你是否試過這段代碼......它給你回來了什麼? – Lamar

+0

我試過了,我得到了重複的名字!無論如何要得到第一次創建爲每個用戶沒有重複請嗎?有一個名稱列舉例如:名稱1 - 消息你好,名稱1 - 消息再見,所以我想得到第一個創建行用戶 – Salah

相關問題