Я интегрирую In App Purchase в свое приложение и создал объект, который реализует обратный вызов делегата:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSArray *myProduct = response.products;
// populate UI
[request autorelease];
}
как один из его методов.
В моем случае у меня есть несколько объектов SKProduct, которые будут возвращены response.products. Я хотел бы получить доступ к массиву myProduct за пределами объекта в контроллере представления, где я отражаю некоторые детали SKProduct, такие как цена и описание продукта.
Вот объявление интерфейса для класса покупки в приложении:
@interface InAppPurchaseManager : NSObject <SKProductsRequestDelegate, SKPaymentTransactionObserver> {
NSArray *myProducts;
SKProductsRequest *productsRequest;
}
// public methods
- (void)loadStore;
- (BOOL)canMakePurchases;
- (void)purchaseFeature:(NSString *)productId;
@property (nonatomic, retain) NSArray *myProducts;
@end
Затем метод viewDidLoad в контроллере моего представления:
- (void) viewDidLoad {
/* Instantiate InAppPurchaseManager object then kick it off to collect Product info */
iapManager = [InAppPurchaseManager new];
[iapManager loadStore];
SKProduct *myProduct;
for (myProduct in iapManager.myProducts) {
NSLog(@"Product title: %@" , myProduct.localizedTitle);
NSLog(@"Product description: %@" , myProduct.localizedDescription);
NSLog(@"Product price: %@" , myProduct.price);
NSLog(@"Product id: %@" , myProduct.productIdentifier);
}
} // end viewDidLoad
Я получаю исключение:
[InAppPurchaseManager myProducts]: нераспознанный селектор отправлен в экземпляр 0x162d60
Что я здесь не так делаю и как я могу "экспортировать" мои данные SKProduct в мой контроллер представления? Любые идеи очень ценятся!
Кроме того, в методе productsRequest: я могу использовать NSLog и печатать через один и тот же цикл и видеть данные SKProduct, прекрасно отраженные в выводе консоли; это просто не работает в методе viewDidLoad.