GKLeaderboardSet.loadLeaderboardSetsWithCompletionHandler(_ completionHandler: (([GKLeaderboardSet]?,NSError?) -> Void)?)
我试图使用此类函数来检索排行榜套从游戏中心的信息。如何使用快捷功能loadLeaderboardSetsWithCompletionHandler
var leaderboardSetsRetrived = [""]
GKLeaderboardSet.loadLeaderboardSetsWithCompletionHandler({ (leaderboardSets, error) -> Void in
leaderboardSetsRetrived = leaderboardSets
})
这是我试图这样做,但Xcode中说
“无法将类型的价值 '([字符串],_) - >虚空' 预期参数类型“(([ GKLeaderboardSet]?,NSError?) - > Void)?“
我应该为参数添加什么内容?
什么游戏中心编程指南告诉我这样做:
之前,你可以加载包含了一组内的排行榜,你必须加载集本身。从Game Center中检索您的游戏的排行榜集列表并显示它们的标题。使用loadLeaderboardSetsWithCompletionHandler:方法为您的应用程序检索排行榜集。然后,您可以使用loadLeaderboardWithCompletionHandler:方法为特定的排行榜集合加载排行榜。从GKLeaderboardSet.h
@available(iOS 7.0, *)
public class GKLeaderboardSet : NSObject, NSCoding, NSSecureCoding {
public var title: String { get } // Localized set title.
public var groupIdentifier: String? { get } // set when leaderboardSets have been designated a game group; set when loadLeaderboardSetsWithCompletionHandler has been called for leaderboards that support game groups
public var identifier: String? // leaderboard set.
// Loads array with all sets for game
// Possible reasons for error:
// 1. Communications problem
// 2. Unauthenticated player
// 3. Set not present
@available(iOS 7.0, *)
public class func loadLeaderboardSetsWithCompletionHandler(completionHandler: (([GKLeaderboardSet]?, NSError?) -> Void)?)
// Loads array with all leaderboards for the leaderboardSet
// Possible reasons for error:
// 1. Communications problem
// 2. Unauthenticated player
@available(iOS 7.0, *)
public func loadLeaderboardsWithCompletionHandler(completionHandler: (([GKLeaderboard]?, NSError?) -> Void)?)
}
extension GKLeaderboardSet {
// Asynchronously load the image. Error will be nil on success.
public func loadImageWithCompletionHandler(completionHandler: ((UIImage?, NSError?) -> Void)?)
}
代码现在我的代码工作。
GKLeaderboardSet.loadLeaderboardSetsWithCompletionHandler({ (leaderboard, error) -> Void in
})
但是该函数由于某种原因没有收到任何参数。我无法将应该检索到的leaderboardSets
保存到我创建的变量中。根据GKLeaderboard类参考:
参数:
completionHandler
当类别被从服务器检索被称为A嵌段。
的块接收下列参数:
leaderboardSets
GKLeaderboardSet
对象,它提供了领先的阵列设置为你的游戏。如果发生错误,则此值可能不为零。在这种情况下,数组可以容纳游戏工具包在发生错误之前能够下载的任何数据。
error
如果发生错误,则此错误对象描述错误。如果操作成功完成,则值为零。
你能发布关于'leaderboardSets'的相关代码吗? –
你的代码看起来不错。也许你有一个旧版本的Xcode,不接受这种封闭方式。我使用Xcode 7.2.1尝试了相同的代码,并且没有问题编译。 – carlos
感谢您的回复,我目前正在使用Xcode 7.2,在更新到7.2.1 –