无法按产品标识符从数组中找到 SKProduct
Posted
技术标签:
【中文标题】无法按产品标识符从数组中找到 SKProduct【英文标题】:Cannot find SKProduct from array by product identifier 【发布时间】:2014-07-16 10:50:48 【问题描述】:我是 ios 编程的新手,来自 C# 背景,所以请多多包涵!
作为我尝试将 IAP 添加到我正在开发的应用程序的一部分,我必须遍历 SKProductsResponse 中返回的产品以查找我的客户选择的产品(因为不推荐使用 paymentWithProductIdentifier)。
在下面的代码中,我知道我的 NSDictionary 中的 productSKU 肯定与产品标识符之一匹配(至少,在控制台中执行 po 显示它是相同的......)但 if 语句永远不会运行。我做错了什么?我尝试将双方都转换为 NSString ,但没有成功。另外,有没有比循环遍历更好的方法来从 SKProductsResponse 中的 productidentifier 中找到产品?
SKProduct *product;
for (SKProduct *thisProduct in products)
if (thisProduct.productIdentifier == payload[@"productSKU"])
product = thisProduct;
谢谢
克里斯
编辑:
好的,所以我找到了如果我替换
if (thisProduct.productIdentifier == payload[@"productSKU"])
与
if ([thisProduct.productIdentifier isEqualToString:payload[@"productSKU"]])
它有效。谁能解释为什么?我认为这是某种类型的选角问题,但我已经尝试过了
if ((NSString *)thisProduct.productIdentifier == (NSString *)payload[@"productSKU"])
没有成功!
【问题讨论】:
你是如何设定产品价值的? 正如我在问题中所说,产品来自 SKProductsResponse。我已经知道 products 包含正确的东西,因为正如我在问题中所说,我可以在循环中对 thisproduct.productIdentifier 执行 po 并查看正确的标识符。 我也许应该提到 products 是一个 NSArray 谢谢,我应该多注意这个问题。如果您有多个 SKProduct,那么不幸的是,这是最快的方法。如果您只有一种产品,请使用 [response.product objectAtIndex:0] "==" 比较指针。 isEqualToString 方法比较字符串中的实际字符。 【参考方案1】:如果您有多个 SKProduct,那么不幸的是,这是最快的方法。如果您只有一种产品,请使用[response.product objectAtIndex:0]
【讨论】:
以上是关于无法按产品标识符从数组中找到 SKProduct的主要内容,如果未能解决你的问题,请参考以下文章