2013-03-05 27 views
0

我正在將購買的項目添加到數組中,以便我可以輕鬆地檢索數據並將它們顯示在tableview中。但是,我得到sigabrt錯誤..我的代碼問題是什麼下面?將iOS中的SKProduct添加到NSMutableArray後發生SIGABRT錯誤

的tableView

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]; 
    } 
+0

你有一個堆棧跟蹤? (在調試器控制檯中嘗試'bt')。 – trojanfoe 2013-03-05 11:48:12

+0

...但您提供的代碼不合法​​(您在另一個方法中間有一個方法聲明)! – trojanfoe 2013-03-05 11:48:54

回答

1

你可能嘗試插入nil到數組(這將導致一個例外,最後變成SIGABRT)。因此,檢查product變量之一是否爲nil

哦,你應該切換到ARC(儘管這與你的問題無關)。

+0

是的,你是正確的..但這很奇怪..我可以訪問產品的詳細信息,如'[[[InAppStore sharedStore] getGun1] localizedTitle]',但SKProduct * product1 = [[InAppStore sharedStore] getGun1];'返回nil。 。 任何原因?? – user123 2013-03-05 12:20:27

相關問題