GKLeaderboardSet.loadLeaderboardSetsWithCompletionHandler(_ completionHandler: (([GKLeaderboardSet]?,NSError?) -> Void)?)
Я пытаюсь использовать эту функцию класса для извлечения информации из наборов лидеров из Game Center.Как использовать быструю функцию loadLeaderboardSetsWithCompletionHandler
var leaderboardSetsRetrived = [""]
GKLeaderboardSet.loadLeaderboardSetsWithCompletionHandler({ (leaderboardSets, error) -> Void in
leaderboardSetsRetrived = leaderboardSets
})
Это то, что я пытался сделать, но Xcode говорит
«Невозможно преобразовать значение типа '([String], _) -> Пустота' ожидаемого типа аргумента«(([ GKLeaderboardSet] ?, NSError?) -> Void)? "
Что я должен указать для параметров?
Что Game Center Руководство по программированию сказал мне делать:
Прежде чем загрузить содержащиеся в лидеров набора, вы должны загрузить сам набор. Получите список наборов лидеров для вашей игры из Game Center и покажите их названия. Используйте метод loadLeaderboardSetsWithCompletionHandler: для извлечения наборов лидеров для вашего приложения. Затем вы можете загрузить таблицы лидеров для определенного набора лидеров, используя метод loadLeaderboardsWithCompletionHandler:.
@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.h
Теперь мой код работает.
GKLeaderboardSet.loadLeaderboardSetsWithCompletionHandler({ (leaderboard, error) -> Void in
})
Но по какой-либо причине функция по каким-либо причинам не получает никаких параметров. Я не могу сохранить leaderboardSets
, который должен быть извлечен для переменной, которую я создал. Согласно GKLeaderboard Class Reference:
Параметры:
completionHandler
блок, который вызывается, когда категории были получены с сервера.
Блока принимает следующие параметры:
leaderboardSets
МассивGKLeaderboardSet
объектов, что обеспечивает лидер наборы для игры. Если произошла ошибка, это значение может быть не ноль. В этом случае массив хранит любые данные, которые Game Kit мог загрузить до возникновения ошибки.
error
При возникновении ошибки этот объект ошибки описывает ошибку. Если операция завершена успешно, значение равно нулю.
Не могли бы вы разместить относительный код о 'leaderboardSets'? –
Ваш код выглядит хорошо. Возможно, у вас есть более старая версия Xcode, которая не принимает это закрытие. Я пробовал этот же код с помощью Xcode 7.2.1, и он компилируется без проблем. – carlos
Спасибо за ответ, я в настоящее время использую Xcode 7.2, попробую еще раз после обновления до 7.2.1 –