UnityでParseのデータを取得する場合に標準では100件ずつになっています。
QueryのLimit()で最大1000まで増やすことができますが、1000件以上取得する場合
やり方が分からなくて悩んだのでメモします。
// データ取得用クエリ
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(ObjectName);
query = query.OrderBy("createdAt");
query = query.Limit(1000);
// データ件数をカウントするクエリ
ParseQuery<ParseObject> countquery = new ParseQuery<ParseObject>(ObjectName);
var ResultCount = countquery.CountAsync();
while (!countresult.IsCompleted) yield return null;
int cnt = countresult.Result;
while( cnt/1000 > loop )
{
//1000件毎にSkipする
if (loop != 0) query = query.Skip(1000);
var task = query.FindAsync();
...
//データを取得して、処理する
}
データ件数カウントと実際のデータ検索用にQueryを2つ用意するのが正しいのか?
わかりませんが、とにかくQuery.Limit()は1000が上限なので
1000件毎にLoopしながらSkip()をしていけばOKということが無事分かりました。
データ件数が多い場合はやばいかもしれませんがそれはおいておきます。