2016-03-31 5 views
0

クエリは、特定の数のユーザーによって作成されたオブジェクトを取得することを目的としています。以下は私のコードです:高速構文解析クエリでオブジェクトが昇順に返されない

var dates = [NSDate]() 
var messages = [String]() 

     let getUsersQuery = PFQuery(className: "followings") 

     getUsersQuery.whereKey("follower", equalTo: PFUser.currentUser()!.objectId!) 

     getFollowedUsersQuery.findObjectsInBackgroundWithBlock { (objects, error) -> Void in 

      if let objects = objects { 

       for object in objects { 

        let followedUser = object["followedUser"] as! String 

        let getPostsQuery = PFQuery(className: "posts") 

        getPostsQuery.whereKey("userId", equalTo: followedUser) 
        getPostsQuery.orderByDescending("updatedAt") 

        getPostsQuery.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in 

         if let objects = objects { 

          for post in objects { 

           self.dates.append(post.createdAt as NSDate!) 
           self.messages.append(post["message"] as! String) 
         } 

         print(self.dates) 

         self.myTableView.reloadData() 
        }) 
       } 
      } 
     } 
    }) 

は、ここで私は、ログで日付を印刷する際に出てくるものです:

enter image description here

しかし、私のテーブルビュー内のコンテンツが昇順ではありません。実際、最近作成された投稿はテーブルビューの一番下にあります。私が気づいたことは、特定のユーザーの投稿が一緒に表示されているように見えることです。したがって、あるユーザーのポストは、別のユーザーが最新のポストを作成しても、テーブルビューの一番上に表示されます。どんな考えが間違っているのでしょうか?ありがとう!

+0

あなたのコードが何をしているのか調べてみよう最初のユーザーになる。あなたが何をしているのかはもちろんのこと、あなたはdeviのネットワーキングを釘付けにするでしょうここにce。あなたは、サーバーにプッシュできるデバイスで多くの作業をしています。 – Fogmeister

答えて

0

ネストされたクエリが必要です。取得しようとしている配列は投稿です。したがって、クエリはポストテーブルになければなりません。 (また、あなたのテーブルではありませんposts。表の名前は常に単数形でなければなりませんpostと呼ばれるべきである。各ポストはpostないpostsと呼ばれている。

let postsQuery = PFQuery(className: "post") 
postsQuery.orderByDescending("updatedAt") 

let usersQuery = PFQuery(className: "following") 
usersQuery.whereKey("follower", equalTo:PFUser.currentUser()!.objectId!) 

// this might need to change depending on what the followed user is called in the `followings` table. 
postsQuery.whereKey("userId", matchesKey:"followed", inQuery:usersQuery) 

getPostsQuery.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in 
    if let objects = objects { 

    for post in objects { 
     self.dates.append(post.createdAt as NSDate!) 
     self.messages.append(post["message"] as! String) 
    } 

    print(self.dates) 

    self.myTableView.reloadData() 
}) 

また、あなたは別々の配列で日付やメッセージを保存している。作成します。構造体または日付と文字列を持ち、Postオブジェクトの単一の配列を持つもの

+1

ありがとう!それは今完璧に動作している! –

関連する問題