2017-03-09 6 views
0

私は、ユーザがスクロールしたときにコメントの数がポストの下に表示されるInstagramのものと同様のホームページを持つアプリケーションを開発してきました。ユーザがコメント数でラベルをタップすると、実際のコメントが画面に表示されます。私は私のアプリケーションでそれに似た何かを達成しようとしてきましたが、私がこれをやっている方法が、以下に表示するコメントの数を得るために多くのリクエスト(クエリ)をサーバーに送信しているかのように感じます各投稿。私は、これを行うためのより効率的で簡潔な方法があったのだろうかと思っていたが、それはサーバーの負荷を軽減するが、それでも同じ効果がある。Parse&Swift - サーバー負荷/要求を減らす方法

より多くのコンテキストを追加するには(注:私は解析を使用しています):

  • 私はポスト
  • が含まれている記事という名前のクラスを持って、私は提出されたコメントのすべてが含まれているコメントという名前のクラスを持っています。特定の投稿のコメントを取得するために、親の投稿のオブジェクトIDと一致するコメント(「parentObjectID」という名前の列)をクエリします。

例のコードは以下の通りです:

let query = PFQuery(className: "Comments") 
    query.whereKey("parentObjectID", equalTo: objectIDs[indexPathNums]) 

    query.order(byDescending: "createdAt") 

    query.findObjectsInBackground { (objects, error) in 
     if error != nil { 
      print("An error occured (USQVC Comments Query)") 
     }else { 

      if let tempArray = objects { 
       for comment in tempArray { 

        if let x = comment { 

         myArray.append(x) 
        } 



       } 
       commentsCount = myArray.count 
       myArray.removeAll() 
      } 

     } 
    } 

彼らは彼らのUIを更新したにもかかわらず、私はちょうど私が記述したもの場合には、画像を含めるたかっ不明であった:

enter image description here

誰かが私にこれを手伝ってもらえると感謝します。ありがとう!

+0

投稿数に20のコメントを割り当てることができます。ユーザーが20までスクロールすると、残りのコメントを得るために電話をかけることができます。 Parse Server APIにマッピングがあるはずです。 – adnbsr

+0

返信いただきありがとうございます!読んだ後、これは実際に私に考えさせてくれました。もう1つの解決策はnumOfCommentsという各ポストに列を追加することです。ユーザーがコメントを追加するたびに、番号が取得され、インクリメントされ、保存されます。これにより、あまりにも多くのサーバー要求がなくても、メインページにコメントの総数が表示されるようになります。私がこれで予見できる唯一の問題は、2人以上のユーザーが同じ時間に投稿を保存した場合、または接続が遅いユーザーが、接続がロードされている間に直近の更新から降順になる場合です。 – Gabe

答えて

2

上記のコメントで指摘したように、incrementKey機能を使用してnumberOfCommentsを増やすことができます。

最良の部分があり、このメソッドは関係なく、多くの人が同時に同じポストのように、正確に同じ時間に写真のような5人が言う方法を意味しないこと、アトミックで、numberOfCommentsは5の代わりに、1ずつ増加します。

この機能は、同時に実行されるのではなく、1つずつ実行されます。あなたは絶対にそれを使うことができます。

+0

返信いただきありがとうございます!私はその方法を使用して終了し、それは完全に動作します。同時に複数のユーザーが 'numberOfComments 'をインクリメントするときに何の問題もないことを聞くことは素晴らしいことです。 – Gabe

関連する問題