【发布时间】:2013-12-02 17:08:43
【问题描述】:
创建SKStoreProductViewController 时,我传递了一个带有商店标识符参数的字典。 :
@{ SKStoreProductParameterITunesItemIdentifier : @010101010 };
这个值应该是NSNumber(如上):
与此键关联的值是 NSNumber 的一个实例,表示您希望商店在呈现视图控制器时显示的项目的 iTunes 标识符。
但是当我将值作为字符串传递时,它可以毫无怨言地工作:
@{ SKStoreProductParameterITunesItemIdentifier : @"010101010" };
这里发生了什么? NSNumber 是否会根据给出的字符串自动创建正确的数字类型?这是发生在NSNumber 还是 StoreKit 这样做?
【问题讨论】:
-
NSDictionary 对象没有显式类型化,那么字典如何知道该值应该是
NSNumber?我认为这一定是 StoreKit 的行为。 -
唯一可行的方法是商店工具包实现实际上是在处理
NSNumber和NSString对象。 -
那一行不是创建了一个 NSDictionary 实例,因此允许 NSNumber 或 NSString 作为参数吗?
-
嗯...这很奇怪。字典将接受针对任何键的任何类型。唯一的问题可能发生在 StoreKit 实际尝试处理字典时。你真的把这个传递给 StoreKit 来处理了吗?
-
是否有可能在幕后调用
integerValue(或floatValue等),这只是巧合吗?报价下方的示例显示 iBooks id 是364709193。
标签: ios objective-c cocoa-touch nsnumber storekit