ios – 在swift中滑动以编辑sqlite数据库内容

我试图创建一个应用程序来存储可以删除的个人详细信息,使用editActionsForRowAtIndexPath进行编辑.删除选项似乎工作正常,但我遇到编辑操作的问题.

我得到了一个错误,如下所述:

Could not cast value of type 'Table_view.UserTableViewController' (0x10a1991b0) to 'NSIndexPath' (0x10a5e8438).

UserRecordViewController是View Controller,用于显示个人详细信息.而InsertRecordViewController是另一个View Controller.

UserTableViewController相关代码:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
    // 1
    let editAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Edit" , handler: { (action:UITableViewRowAction, indexPath:NSIndexPath) -> Void in

            self.performSegueWithIdentifier("editSegue", sender: self)

    })

    editAction.backgroundColor = UIColor.darkGrayColor()
   // let editIndex = editAction.indexOfAccessibilityElement(indexPath.row)

    let deleteAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Delete" , handler: { (action:UITableViewRowAction, indexPath:NSIndexPath) -> Void in

        let userInfo: UserInfo = self.marrUserData.objectAtIndex(indexPath.row) as! UserInfo
        let isDeleted = ModelManager.getInstance().deleteUserData(userInfo)
        if isDeleted {
            Util.invokeAlertMethod("", strBody: "Record deleted successfully.", delegate: nil)
        } else {
            Util.invokeAlertMethod("", strBody: "Error in deleting record.", delegate: nil)
        }
        self.getUserData()

    })

    deleteAction.backgroundColor = UIColor.lightGrayColor()

    return [deleteAction, editAction]
}



override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if(segue.identifier == "editSegue"){

        let selectedIndexPath = sender as! NSIndexPath
        let index = selectedIndexPath.row
        //if let indexPath: NSIndexPath = self.tableView.indexPathForCell(sender as! UITableViewCell) {

        //let btnEdit : UIButton = sender as! UIButton
        //let selectedIndex : Int = btnEdit.tag
        let viewController : InsertRecordViewController = segue.destinationViewController as! InsertRecordViewController
        viewController.isEdit = true
        viewController.userData = self.marrUserData.objectAtIndex(index) as! UserInfo

       // }

    }

}

我想知道我哪里出错了.伙计们好吗?

提前致谢!!

最佳答案 导致错误的行是:let selectedIndexPath = sender as! NSIndexPath

Sender是SelectedCell,而不是IndexPath!

在行self.performSegueWithIdentifier(“editSegue”,sender:self)之前,将类的属性(selectedIndexPath)设置为indexPath,然后从prepareForSegue(segue:UIStoryboardSegue,sender:AnyObject?)访问此属性.

另一种方法可以在:https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson9.html#//apple_ref/doc/uid/TP40015214-CH9-SW1找到

点赞