1

我正在尝试做 inaAppPurchases 并使用以下代码

     NSSet *myProductIdentifiers = [NSSet setWithObjects:
                                     @"inapppurchase.first",
                                     @"inapppurchase.second",
                                     @"inapppurchase.third",
                                     @"inapppurchase.fourth",
                                     @"inapppurchase.fifth",
                                     @"inapppurchase.sixth",
                                     nil];

        if ((self = [super initWithProductIdentifiers:myProductIdentifiers]))
        {

        }
        return self;
///////////////////////////////////    

    - (id)initWithProductIdentifiers:(NSSet *)identifiers
    {
        if ((self = [super init]))
        {
        }
        self.productIdentifiers = identifiers;

        return self;
    }

    - (void)requestProducts
    {
        self.request = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
        request.delegate = self;
        [request start];
    }

    - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
    {
        self.products = response.products;
        SKProduct *product = [self.products objectAtIndex:0];
        NSLog(@"%@", product.price);
        self.request = nil;
    }

问题是,当我调用requestProducts然后调用委托函数 时- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response,产品的顺序与我的 NSSet 值不同

我的self.products的顺序是第五,第一,第二,第四,第六和第三。这是为什么?为什么顺序不正确?

4

1 回答 1

1

与数组不同, ANSSet不会按特定顺序保存对象。事实上,objectAtIndex不会与NSSet. 为了查看 a 中的对象NSSet,您可以使用它的一个属性,例如anyObject,它随机返回集合中的一个对象,或者allObjects,它返回NSArray集合中所有对象的 a,它们在返回的数组中随机排序. SKProductsRequest很可能访问,然后枚举数组中的NSSet.allObjects每个对象以确定它是否为有效产品。

一旦您返回随机订购的有效产品集,只需将该集与内部正确订购产品的数组进行比较。您将能够识别任何无效产品,同时保留您的产品订单。

于 2013-02-24T19:20:44.163 回答