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

问题描述 投票:0回答:1

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

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

但是说

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

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

ios swift gamekit
1个回答
2
投票

我想问题是当maxRange完成时自动设置loadScores(completionHandler:)属性,你不应该尝试自己设置它

maxRange

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

我想你应该使用range获得(过滤)前N个分数

range

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

或者:如果你想获得所有分数,并且有超过100个分数,你似乎应该递归加载分数增加的分数,如[1,100],[101,200] ... [1101,1200] ..等等直到你得到一个低于100分的范围。但是实现分页是一个更好的主意,因为有可能有很多分数,他们将花费太多时间来加载它们

© www.soinside.com 2019 - 2024. All rights reserved.