Получить локализованную цену продукта - Неожиданное возвращаемое значение в пустой функции - PullRequest
0 голосов
/ 23 октября 2018

Я использую SwiftyStoreKit для реализации iAP в моем проекте.У меня есть автоматически обновляемая подписка, которую пользователи могут покупать и восстанавливать.Кажется, это работает нормально, однако у меня возникают проблемы при извлечении информации о продукте для отображения в пользовательском интерфейсе.

Я пытаюсь отобразить локализованную цену, возвращаемая цена - это годовая стоимость, поэтому мне нужно разделитьчисло на 12, чтобы также отобразить его в качестве ежемесячной стоимости.Однако, когда я получаю цену и пытаюсь вернуться к значению, я получаю следующую ошибку:

Неожиданное возвращаемое значение в функции void

Настройка кнопкизначение

let subscribeButton = subscriptionManager.getSubscriptionPricePerMonth(isYearly: false)
subscribeButton(monthlyCost, for: .normal)

Получение цены

//Get prices

func getSubscriptionPricePerMonth() -> String {
    let productId = getProductId()


    NetworkActivityIndicatorManager.networkOperationStarted()
    SwiftyStoreKit.retrieveProductsInfo([productId]) { result in
        NetworkActivityIndicatorManager.networkOperationFinished()

        if let product = result.retrievedProducts.first {

            let priceString = product.localizedPrice!
            return priceString
        } else if let invalidProductId = result.invalidProductIDs.first {
              //return ("Could not retrieve product info", message: "Invalid product identifier: \(invalidProductId)")
            print("Could not retrieve product info\(invalidProductId)")
        } else {
            let errorString = result.error?.localizedDescription ?? "Unknown error. Please contact support"
            //return ("Could not retrieve product info, \(errorString)")
            print("\(errorString)")

        }
    }

}

1 Ответ

0 голосов
/ 23 октября 2018

Неожиданное возвращаемое значение в void функции

Ошибка говорит о том, что вы пытаетесь вернуть какое-то значение из функции void.

Теперь давайте разберемсяваш случай.

Ваша фактическая функция -

func getSubscriptionPricePerMonth() -> String {}

, которую вы ожидаете вернуть вам некоторое значение в виде строки.Но, глядя на код внутри, вы используете асинхронный блок с пустым типом возврата

SwiftyStoreKit.retrieveProductsInfo([productId]) { result -> Void in 
  // Here you are returning some values after parsing the data, which is not allowed.
}

Для возврата чего-либо из блока вы можете использовать DispatchGroup , чтобы сделать его синхронным

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...