2017-12-26 14 views
0

GKLeaderboardでloadScoresリクエストをシミュレートする必要があります。拡張機能でreadonlyプロパティを設定する方法は?

extension GKLeaderboard { 
    func testLoadScores(completion: @escaping ([GKScore]?, Error?) -> Void) { 
     ... 
     self.maxRange = 100 
    } 
} 

しかし

がプロパティに割り当てることができませんと言うされています:「maxRangeは、」私はオーバーライドすることができ、どのよう

取得専用のプロパティです私は拡張子を作成したことについては このプロパティ?プロパティの説明に リンク:here

+1

@RawandAhmedShaswar maxRangeはAppleによって埋め込まれています –

答えて

2

私は問題がloadScores(completionHandler:)が完了したときmaxRangeプロパティが自動的に設定されていることであると仮定し、あなた自身の

maxRange

これでそれを設定しようとするべきではありませんプロパティは、loadScores(completionHandler :)の呼び出しが完了するまで無効です。その後、クエリーに適用したフィルタがあれば、ゲームに戻るために使用できるエントリの総数が表示されます。

私はあなたが(フィルター)を取得するために rangeを使用する必要があると仮定し

トップNスコア

range

リーダーボード要求が初期化(playerIDs :)メソッドを使用して初期化された場合、範囲プロパティは無視されます。それ以外の場合は、rangeプロパティを使用して、どのスコアがゲームに返されるかをフィルタリングします。たとえば、[1,10]の範囲を指定した場合、検索が完了した後、ゲームは最高10のスコアを受け取ります。デフォルトの範囲は[1,25]です。あなたはすべてのスコアを取得したいとそれらの100以上がいるなら、あなたが再帰的に増加した範囲でスコアをロードする必要がありそうです: 最小指数は、最大長は100

OR 1です[1,100]、[101,200] ... [1101、1200] ..のように、あなたが100点未満の範囲を取得するまで。しかし、ページングを実装することは良い考えです。なぜなら、非常に多くのスコアがあり、それらを読み込むのに時間がかかりすぎる可能性があるからです。

関連する問題