我需要在GKLeaderboard上模拟loadScores请求。 为此我创建了扩展名:
extension GKLeaderboard {
func testLoadScores(completion: @escaping ([GKScore]?, Error?) -> Void) {
...
self.maxRange = 100
}
}
但是说
无法分配给属性:'maxRange'是一个只用属性
那我怎么能覆盖这个属性呢? 链接到属性描述:here
答案 0 :(得分:2)
我认为问题是maxRange
属性是在loadScores(completionHandler:)
完成时自动设置的,您不应该尝试自己设置
在完成对loadScores(completionHandler :)的调用之前,此属性无效。之后,它包含了您应用于查询的过滤器可以返回游戏的条目总数。
我认为您应该使用range
来获得(过滤)前N个分数
如果使用init(playerIDs :)方法初始化排行榜请求,则会忽略range属性。否则,range属性用于过滤返回到游戏的分数。例如,如果您指定[1,10]的范围,则在搜索完成后,您的游戏将获得最佳的十个分数。默认范围是[1,25]。 最小索引为1.最大长度为100。
OR:如果您想获得所有分数并且其中超过100个,那么您似乎应该递归加载范围越来越大的分数,例如[1,100],[101,200] ... [1101,1200] ..依此类推,直到得到的分数低于100分。但是实现分页是一个更好的主意,因为可能有很多分数,他们将花费太多时间来加载它们