在App Purchase Crashes App中

时间:2012-11-21 20:50:38

标签: objective-c iphone in-app-purchase app-store

我有一个iOS应用程序,我刚刚提交了更新。应用程序的开发版本(模拟器和我的4S)从未崩溃,它工作得很好。该应用程序今天获得批准以及IAP,但我今天早上意识到iAP并未“清除购买”。我刚刚购买它,但应用程序仍然崩溃。 iPhone提供的错误(运行应用商店版本)会出现错误:

<Error>: *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array'

以下是发生这种情况的代码:

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:
(SKProductsResponse *)response
{
    NSArray *myProduct = response.products;
    //this line is where the error occurs
    noAdProduct = [myProduct objectAtIndex:0];
    if (![[[NSUserDefaults standardUserDefaults] objectForKey:@"the id here"] boolValue]) {
        adCell.detailTextLabel.text = [NSString stringWithFormat:@"$%@", noAdProduct.price];
        adCell.userInteractionEnabled = YES;
        adCell.accessoryType = UITableViewCellAccessoryNone;
        adCell.accessoryView = nil;
        [self.tableView reloadData];
    }
}

在请求可用产品列表时会发生这种情况,这显然会在模拟器中返回产品,但不会在应用程序中返回。我刚刚添加了一个防范措施,但我需要再次将它提交到App Store。

有谁知道为什么iAP没有出现在App Store版本中?我是否需要等待“清算销售”选项才能转到Apple的服务器?谢谢!

1 个答案:

答案 0 :(得分:0)

显然myProduct数组为空。为什么会发生这种情况是另一个问题,但是如果不确保所请求的索引存在,就不应该调用objectAtIndex

if ([myProduct count] > 0)
    noAdProduct = [myProduct objectAtIndex:0];
else
   // Deal with the situation when the array is empty.