创建SKStoreProductViewController
时,我会传递一个带有商店标识符参数的字典。 :
@{ SKStoreProductParameterITunesItemIdentifier : @010101010 };
这个值应该是NSNumber
(如上所述):
与此键关联的值是NSNumber的一个实例,表示您希望商店在显示视图控制器时显示的项目的iTunes标识符。
但是当我将值作为字符串传递时,它没有抱怨:
@{ SKStoreProductParameterITunesItemIdentifier : @"010101010" };
这里发生了什么? NSNumber
是否自动从其提供的字符串中创建正确的数字类型?这是发生在NSNumber
还是StoreKit这样做?
答案 0 :(得分:4)
实际上,想一想......
最初,我认为他们必须先将NSString
转换为NSNumber
,然后再做他们需要做的事情,以获取您正在寻找的信息。
但是,第二个想法......
我猜是StoreKit
在字符串中使用value
对SKStoreProductParameterITunesItemIdentifier
。在这种情况下,他们会做类似......
NSString *someStringToGetTheResults = [NSString stringWithFormat:@"thisIsThePath...?storeKitID=%@", dictionary[SKStoreProductParameterITunesItemIdentifier]];
无论您传递@12345
还是@"12345"
。
...可能
虽然没有真正的方法。
答案 1 :(得分:2)
文档说存储在SKStoreProductParameterITunesItemIdentifier键中的值应该是NSNumber。保存该密钥中的任何其他内容今天都可以使用,但也可能在任何操作系统发布后停止工作,所以不要这样做。
正如其他人所建议的那样,商店工具包很可能是获取SKStoreProductParameterITunesItemIdentifier键的值,假设它是一个NSNumber,并发送一个integerValue方法来获取它的数值。你很幸运,因为NSNumber和NSString都有一个integerValue方法。