检索产品本地化价格 - 无效函数中的意外非无效 return 值
Retrieve product localised price - Unexpected non-void return value in void function
我正在使用 SwiftyStoreKit 在我的项目中实施 iAP。我有一个用户可以购买和恢复的自动续订订阅。这似乎工作正常但是我在检索要显示到 UI.
的产品信息时遇到问题
我正在尝试显示本地化价格,价格 returned 是年度费用,因此我需要将数字除以 12 以将其显示为每月费用。但是,当获取价格并尝试 return 估值时,出现以下错误:
Unexpected non-void return value in void function
设置按钮值
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)")
}
}
}
Unexpected non-void return value in void function
错误说,您正在尝试 return 来自 void 函数的一些值。
现在,让我们了解一下您的情况。
你的实际功能是
func getSubscriptionPricePerMonth() -> String {}
您期望 return 您将某个值作为字符串。但是看看里面的代码,你正在使用异步块,它有 void return type
SwiftyStoreKit.retrieveProductsInfo([productId]) { result -> Void in
// Here you are returning some values after parsing the data, which is not allowed.
}
对于 return 块外的东西,您可以使用 DispatchGroup 使其同步
希望这对您有所帮助。
我正在使用 SwiftyStoreKit 在我的项目中实施 iAP。我有一个用户可以购买和恢复的自动续订订阅。这似乎工作正常但是我在检索要显示到 UI.
的产品信息时遇到问题我正在尝试显示本地化价格,价格 returned 是年度费用,因此我需要将数字除以 12 以将其显示为每月费用。但是,当获取价格并尝试 return 估值时,出现以下错误:
Unexpected non-void return value in void function
设置按钮值
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)")
}
}
}
Unexpected non-void return value in void function
错误说,您正在尝试 return 来自 void 函数的一些值。
现在,让我们了解一下您的情况。
你的实际功能是
func getSubscriptionPricePerMonth() -> String {}
您期望 return 您将某个值作为字符串。但是看看里面的代码,你正在使用异步块,它有 void return type
SwiftyStoreKit.retrieveProductsInfo([productId]) { result -> Void in
// Here you are returning some values after parsing the data, which is not allowed.
}
对于 return 块外的东西,您可以使用 DispatchGroup 使其同步
希望这对您有所帮助。