2011-05-26 10 views
0

を受信:このエラーが発生している:は、予期しない「EXC_BAD_ACCESS」

ここ
Program received signal: “EXC_BAD_ACCESS”. 
warning: Unable to read symbols for /Xcode3.2.5/Platforms/iPhoneOS.platform/DeviceSupport/4.3.2 (8H7)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found). 

私は、セルとcalanderからそのイベントからオブジェクトを削除します。

if (editingStyle == UITableViewCellEditingStyleDelete) 
    { 
     //Get the object to delete from the array. 
     lovkid *mykids = (lovkid *)[appDelegate.actionarray1 objectAtIndex:indexPath.row]; 
     appDelegate.actionId = mykids.Id; 

     //delete from calender 
     if([ mykids.Event isEqualToString:@"empty"]) 
     { 
     } 
     else 
     { 
      EKEvent* event2 = [appDelegate.eventStore eventWithIdentifier:mykids.Event]; 
      if (event2 != nil) 
      { 
       NSError* error = nil; 
       [appDelegate.eventStore removeEvent:event2 span:EKSpanThisEvent error:&error]; 
      } 
     } 

     //delete end 
     [mykids deleteAction]; 
     [appDelegate.actionarray1 removeObjectAtIndex:indexPath.row]; 

     //Delete the object from the table. 
     [localTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
     [localTable reloadData]; 
     a = 0; 
    } 
    else 
    { 
     //NSLog(@"test"); 
    } 

は、DBから削除します:

deleteStmt1 = nil; 
    if(deleteStmt1 == nil) 
    { 
      const char *sql = "delete from actions where id = ?"; 
      if(sqlite3_prepare_v2(database1, sql, -1, &deleteStmt1, NULL) != SQLITE_OK) 
       NSAssert1(0, @"Error while creating delete statement. '%s'", sqlite3_errmsg(database1)); 

    //When binding parameters, index starts from 1 and not zero. 
     sqlite3_bind_int(deleteStmt1, 1,(int)appDelegate.actionId); 

     if (SQLITE_DONE != sqlite3_step(deleteStmt1)) 
      NSAssert1(0, @"Error while deleting. '%s'", sqlite3_errmsg(database1)); 

     sqlite3_reset(deleteStmt1); 
     sqlite3_finalize(deleteStmt1); 
    } 

このエラーの原因は何ですか?

+0

ログには何が表示されますか?どんなラインでクラッシュしていますか? – Rayfleck

+0

ステップ1は[NSZombieを有効にする](http://stackoverflow.com/questions/5841014/zombie-logging-enable/5841041#5841041)です。これを実行した後、アプリケーションをビルドして実行し、さらに詳細なエラーメッセージを表示します。 –

答えて

1

私は行を削除することをお勧め:

[localTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

あなたはreloadDataでテーブルをリロードしている場合、行をそのように削除する必要はありません。テーブルは、新しいデータソース状態を反映して再ロードされます。

一方、テーブルをスムーズにリフレッシュするには、beginUpdatesendUpdatesを調べることができます。その場合は、deleteRowsAtIndexPathsを使用すると意味があります。

これがあなたのクラッシュを解決するかどうかわかりません。そうでない場合は、デバッガの下で実行することをお勧めします。これにより、クラッシュの原因となっている問題のステートメントが正確にわかります。

+0

アニメーションも削除する必要がありました。挫折。 –