【问题标题】:SIGABRT error after adding SKProduct to NSMutableArray in iOS在 iOS 中将 SKProduct 添加到 NSMutableArray 后出现 SIGABRT 错误
【发布时间】:2013-03-05 11:43:58
【问题描述】:

我将购买的商品添加到一个数组中,这样我就可以轻松地检索数据并在表格视图中显示它们。但是我收到了 sigabrt 错误。下面的代码有什么问题?

表格视图

if (indexPath.section == 0) {

    switch (indexPath.row) {
        case 0:

            cell.textLabel.text = @"Default Gun";
            break;

        case 1:

            cell.textLabel.text = [[[[GameData sharedData] gunsArray] objectAtIndex:0] localizedTitle];
            break;


        default:
            break;

    }


    - (NSMutableArray *) gunsArray {

        SKProduct *product1 = [[InAppStore sharedStore] getGun1];
        SKProduct *product2 = [[InAppStore sharedStore] getGun2];
        SKProduct *product3 = [[InAppStore sharedStore] getGun3];
        SKProduct *product4 = [[IInAppStore sharedStore] getGun4];

        NSMutableArray *arr = [[NSMutableArray alloc] init];

        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isGun1Purchased"] == YES && ![arr containsObject:product1]) {
            [arr addObject:product1];  // error occurs here

        }
        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isGun2Purchased"] == YES && ![arr containsObject:product2]) {
            [arr addObject:product2];  

        }
        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isGun3Purchased"] == YES && ![arr containsObject:product3]) {
            [arr addObject:product3];

        }

        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isGun4Purchased"] == YES && ![arr containsObject:product4]) {
            [arr addObject:product4];

        }

        return [arr autorelease];
    }

【问题讨论】:

  • 你有堆栈跟踪吗? (在调试器控制台中尝试bt)。
  • ...但是您提供的代码不合法​​(您在另一个方法中间有一个方法声明)!

标签: ios uitableview nsmutablearray in-app-purchase sigabrt


【解决方案1】:

您可能尝试将nil 插入到数组中(这会导致异常并最终插入到 SIGABRT 中)。因此检查product 变量之一是否为nil

哦,您应该切换到 ARC(尽管这与您的问题无关)。

【讨论】:

  • 是的,你是对的.. 但这很奇怪.. 我可以访问像[[[InAppStore sharedStore] getGun1]localizedTitle] 这样的产品详细信息,但SKProduct *product1 = [[InAppStore sharedStore] getGun1];returns nil.. 任何原因??
猜你喜欢
  • 2015-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多