2013-02-24 3 views
1

Я пытаюсь сделать inaAppPurchases и используя следующий кодInApp покупки странно устраивая в массиве

 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 - Пятый, Первый, Второй, Четвертый, Шестой и третий. Почему? Почему это не в порядке?

+2

По определению, набор не имеет порядка. Возможно, упорядоченный набор 'NSOrderedSet' поможет. – rmaddy

ответ

1

A NSSet не сохраняет объекты в определенном порядке, в отличие от массивов. Фактически, objectAtIndex не будет работать с NSSet. Чтобы просмотреть объекты в NSSet, вы можете использовать одно из своих свойств, например anyObject, которое случайно возвращает объект в наборе, или allObjects, который возвращает NSArray всех объектов в наборе, при этом они упорядочены случайным образом в возвращаемом массиве. Вероятно, SKProductsRequest имеет доступ к NSSet.allObjects, а затем перечисляет каждый объект в массиве, чтобы определить, является ли он действительным продуктом.

После того, как вы вернетесь к произвольно упорядоченному набору допустимых продуктов, просто сравните набор с массивом, в котором есть товары, упорядоченные внутри. Вы сможете идентифицировать любые недопустимые продукты, сохраняя при этом свой заказ на продукт.

Смежные вопросы