Перейти к основному содержимому

sigma-client-check-flag

SigmaClient.checkFlag

func checkFlag<T: SigmaPropertyType>(flagName: String, onSuccess: SigmaSuccessCallback<T?>?, onError: SigmaErrorCallback?)

func checkFlag<T: SigmaPropertyType>(flagName: String) async throws -> T?

Получает значение FeatureFlag сответствующего типа (Bool, Int, Double, String или [String: Any]).

Параметры

NameTypeRequiredDefaultDescription
flagNameStringДаНазвание Feature Flag
onSuccessSigmaSuccessCallback?ДаТолько для callback версии метода. Closure, содержащая в себе значение запрашиваемого Feature Flag
onErrorSigmaErrorCallback?ДаТолько для callback версии метода. Closure, содержащая в себе ошибку при запросе Feature Flag

Возвращаемое значение

TypeDescription
Bool? / Int? / Double? / String? / [String: Any]?Только для async-await версии метода. Значение запрашиваемого Feature Flag

Ошибки

ErrorDescription
SigmaError.requestConfigFailedОшибка запроса конфигурационного файла. Содержит в себе объект SigmaNetworkError с более детальной информацией об ошибке
SigmaError.requestLocationFailedОшибка запроса геолокации. Содержит в себе объект SigmaNetworkError с более детальной информацией об ошибке
SigmaError.featureFlagNotFoundFeature Flag с данным именем не найден в конфигурационном файле
SigmaError.featureFlagNoRulesДля данного Feature Flag отсутствуют правила, по которым определяется значение флага
SigmaError.featureFlagRulesNotSatisfiedДля данного Feature Flag не удовлетворено ни одно правило

Использование

import SigmaSDK

guard let client = Sigma.getClient() else { return }

// Callback версия
client.checkFlag(
flagName: "my_first_flag",
onSuccess: { (value: Bool?) in
// Обработка значения Feature Flag
},
onError: { error in
// Обработка ошибки
}
)

// Async-await версия
do {
let firstFlag: Bool? = try await client.checkFlag(flagName: "my_first_flag")
// Обработка значения Feature Flag
} catch let error {
// Обработка ошибки
}

Дополнительная информация

Несмотря на то, что методы получения Feature Flag выбрасывают ошибки, даже при отсутствии ошибок значение флага может быть nil. Эта ситуация может возникнуть, например, при попытке получить флаг с типом Int, хотя его фактическое значение String.