Ios 如何将数据从一个表视图单元格传输到另一个表视图单元格?

Ios 如何将数据从一个表视图单元格传输到另一个表视图单元格?,ios,swift,uitableview,Ios,Swift,Uitableview,我正在尝试创建收藏夹页面。如何让用户单击一个表视图中的图像,然后将他们单击的表视图中的数据传输到另一个页面中的另一个表视图 @IBAction func favoritesSelected(sender: AnyObject) { if toggleState == 1 { sender.setImage(UIImage(named:"Star Filled-32.png"),forState:UIControlState.Normal) isFa

我正在尝试创建收藏夹页面。如何让用户单击一个表视图中的图像,然后将他们单击的表视图中的数据传输到另一个页面中的另一个表视图

@IBAction func favoritesSelected(sender: AnyObject)
{
    if toggleState == 1
    {
        sender.setImage(UIImage(named:"Star Filled-32.png"),forState:UIControlState.Normal)
        isFav = true

        var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
        var context:NSManagedObjectContext = appDel.managedObjectContext

        var newFave = NSEntityDescription.insertNewObjectForEntityForName("Favorites", inManagedObjectContext: context) as NSManagedObject
        newFave.setValue("" + nameLabel.text!, forKey: "favorite")

        do
        {
            try context.save()
        }
        catch _
        {
            print("error")
        }

        //print("\(newFave)")
        print("Object saved")

        toggleState = 2
    }
从上面的代码中,您可以看到当用户单击收藏夹按钮时会发生什么。图像更改,并将名称上载到核心数据

我正试图让它转到另一个表视图单元格类,这样当它转到收藏夹页面时,所喜欢的名称就已经存在了

我会展示我在那门课上学到的东西,但我肯定这是错的

if (result == 2)
    {
        var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
        var context:NSManagedObjectContext = appDel.managedObjectContext

        var request = NSFetchRequest(entityName: "Favorites")
        request.returnsObjectsAsFaults = false

        do 
        {
            var results:NSArray = try context.executeFetchRequest(request)

            if (results.count <= 0)
            {
                print("Either all object deleted or error")
            }
        }
        catch _
        {
            print("error")
        }


    }
    else
    {
        print("no show")
    }
if(结果==2)
{
var appDel:AppDelegate=(UIApplication.sharedApplication().delegate为!AppDelegate)
变量上下文:NSManagedObjectContext=appDel.managedObjectContext
var request=NSFetchRequest(entityName:“收藏夹”)
request.returnsObjectsAsFaults=false
做
{
var结果:NSArray=try context.executeFetchRequest(请求)

如果(results.count)选项1:NSNotification触发tableView重新加载:

使用通知注册UITableView
tableView

NSNotificationCenter.defaultCenter().addObserver(self, selector: "contextDidSave:", name: NSManagedObjectContextDidSaveNotification, object: nil)

func contextDidSave(sender: NSNotification) {
    tableView.reloadData()
}
在用户单击第一个示例中的星形并正确保存上下文后,将执行
contextDidSave
回调,并且
tableView
将加载数据库中的最新状态

选项2:使用NSFetchedResultsController设置UITableView

使用此选项,一旦用户单击星号并保存上下文,iOS将自动触发对选定单元格的更新。有关参考信息,请参阅本文:


在我的应用程序中,我使用了最喜欢的功能,完成了以下操作:

1) 在“我的模型”上,对象有一个名为“收藏夹”的布尔属性,默认值为false

2) 在列出所有对象的表视图中,当用户点击“收藏夹”按钮时,将相应模型对象上的“收藏夹”属性设置为true,并保存托管对象上下文

3) 在希望显示收藏夹对象的表视图中,使用“收藏夹”属性为true的所有模型对象查询核心数据,并显示这些结果。如Christopher Harris的回答中所述,如果您是使用NSFetchedResultController的管理员,这一点很简单