2016-07-31 9 views
0

私はfmdb sqliteデータベースラッパーを使用しました。私は選択された行ラベルのテキストを取得すると混乱しています。私の混乱は、私がスワイプしてtableViewの行を削除すると、その行全体もそのデータベースcurrentCell.userID.textから削除されます。そう、これを行う方法?前もって感謝します。私はあなたがlet index = tableView.indexPathForSelectedRowを使用すべきではない、swift 2.0でsqliteデータベースから選択したテーブルビューの行データをスワイプして削除する方法は?

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 

    let index = tableView.indexPathForSelectedRow 
    let currentCell = tableView.cellForRowAtIndexPath(index!) as! DashBoardCell 
    print(currentCell.userID.text) //I am getting NiL 

    let deletedID = currentCell.userID.text 

    if editingStyle == .Delete 
    { 

     let tableData = indexPath.row 

     items.removeAtIndex(tableData) 
     number.removeAtIndex(tableData) 
     tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 

     let filemgr = NSFileManager.defaultManager() 
     let dirPaths = filemgr.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) 

     databasePath = dirPaths[0].URLByAppendingPathComponent("visitors.db").path! 

     let contactDB = FMDatabase(path: self.databasePath as String) 
     if contactDB.open() 
     { 
      let deleteSQL = "SELECT * FROM VISITORLIST WHERE userid = '\(deletedID)'" 
      let result = contactDB.executeUpdate(deleteSQL, withArgumentsInArray: nil) 
      if !result 
      { 
       print("Failed To Delete Visitor Lists") 
       print("Error3: ",contactDB.lastErrorMessage()) 
      } 
      else 
      { 
       print("Successfully Deleted") 

      } 

     } 
     else 
     { 
      print("Error4: ",contactDB.lastErrorMessage()) 
     } 

     tableView.reloadData() 
    } 
} 

答えて

1

を試してみる コードは、あなただけのindexPathを使用する必要があります。あなたの現在のコードは、テーブルデータから正しいオブジェクトを削除しますが、SQLiteストアから間違ったオブジェクト(行が選択されていない場合は何もありません)を削除します。

+0

うん!あなたは正しいです。私はちょうど 'tableView'の' indexpath'を選択するのを混乱さしました –

1
let deleteSQL = "SELECT * FROM VISITORLIST WHERE userid = '\(deletedID)'" 

は次のようになります。

let deleteSQL = "DELETE FROM VISITORLIST WHERE userid = '\(deletedID)'" 

:)

+0

Mr.Muhammedに感謝します。 'deletedID'はnilです。とにかく 'currentCell.userID.text'を取得しますか? –

+0

func tableView(tableView:UITableView、cellForRowAtIndexPath indexPath:NSIndexPath) - > UITableViewCell { }メソッドを配置できますか? – Muhammed

+0

ええ..私は私の質問Mr.Muhammedを更新します –

関連する問題