如何在扩展中设置只读属性?

时间:2017-12-26 07:53:40

标签: ios swift gamekit

我需要在GKLeaderboard上模拟loadScores请求。 为此我创建了扩展名:

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

但是说

  

无法分配给属性:'maxRange'是一个只用属性

那我怎么能覆盖这个属性呢? 链接到属性描述:here

1 个答案:

答案 0 :(得分:2)

我认为问题是maxRange属性是在loadScores(completionHandler:)完成时自动设置的,您不应该尝试自己设置

maxRange

  

在完成对loadScores(completionHandler :)的调用之前,此属性无效。之后,它包含了您应用于查询的过滤器可以返回游戏的条目总数。

我认为您应该使用range来获得(过滤)前N个分数

range

  

如果使用init(playerIDs :)方法初始化排行榜请求,则会忽略range属性。否则,range属性用于过滤返回到游戏的分数。例如,如果您指定[1,10]的范围,则在搜索完成后,您的游戏将获得最佳的十个分数。默认范围是[1,25]。   最小索引为1.最大长度为100。

OR:如果您想获得所有分数并且其中超过100个,那么您似乎应该递归加载范围越来越大的分数,例如[1,100],[101,200] ... [1101,1200] ..依此类推,直到得到的分数低于100分。但是实现分页是一个更好的主意,因为可能有很多分数,他们将花费太多时间来加载它们