【问题标题】:In Swift, how to grab object id from UITableView and delete object based on object id?在 Swift 中,如何从 UITableView 中获取对象 id 并根据对象 id 删除对象?
【发布时间】:2015-02-09 11:34:55
【问题描述】:

我不知道如何在用户从中选择 UITableView 后从 UITableView 中获取对象 id,在另一个视图控制器中,我想根据我已经从前一个获取的对象 id 删除该对象。

UITableView

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

        /* grab object id here and pass to NSUserDefault*/

        let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

        let deleteViewController = storyBoard.instantiateViewControllerWithIdentifier("accessView") as DeleteViewController
        self.presentViewController(deleteViewController, animated:true, completion:nil)

    }

删除视图控制器

/* Delete object happen here*/

【问题讨论】:

    标签: ios uitableview swift core-data


    【解决方案1】:

    您可以在DeleteViewController 中设置一个属性,并在初始化视图控制器时将值传递给它。

    class DeleteViewController {
      var objectId: Int?
    }
    
    // Previous view controller
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    
      // Grab your object from the data source
      let object = dataSource[indexPath.row]
    
      let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    
      let deleteViewController = storyBoard.instantiateViewControllerWithIdentifier("accessView") as DeleteViewController
    
      // Pass the Id
      deleteViewController.objectId = object.objectId
      self.presentViewController(deleteViewController, animated:true, completion:nil)
    
    
    }
    

    【讨论】:

      【解决方案2】:

      我已经找到答案了。

      func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
      
              let data: NSManagedObject = myList[indexPath.row] as NSManagedObject
      
              let objectId = data.valueForKeyPath("objectId") as? String
              NSUserDefaults.standardUserDefaults().setObject(objectId, forKey: "objectId")
      
              let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
              let deleteViewController = storyBoard.instantiateViewControllerWithIdentifier("accessView") as DeleteViewController
              self.presentViewController(deleteViewController, animated:true, completion:nil)
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-20
        • 2015-11-14
        • 2013-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多