通过CoreData和委托在静态tableView单元格中传递变量

时间:2017-01-01 22:25:51

标签: ios uitableview core-data tableviewcell

我有一个启用了ConfigureTableViewController的tableview,它有两个静态单元Users和Locations。 用户tableview单元格通过usersSegue连接到ListUserTableViewController。 位置tableview单元格通过segue locationsSegue

连接到LocationTableViewController

ListUserTableViewController有一个协议:

    protocol UserSelectionDelegate{
      func userDidSelectUser(userIdentifier:NSString)
    }

我从ListUserTableViewController中选择用户并通过实现委托UserSelectionDelegate

将其传递给ConfigureTableViewController
    class ConfigureTableViewController: UITableViewController, UserSelectionDelegate {
    …
    …

    // function pulls user’s fullName from Core Data table based on userIdentifier
    func userDidSelectUser(userIdentifier : NSString) {
    var fetchedResults: [User] = []

    let context = (UIApplication.shared.delegate as AppDelegate).persistentContainer.viewContext

     userIdentifierString = userIdentifier

    do {

        fetchedResults = try context.fetch(User.fetchRequest())
    }
    catch {
        print ("fetch task failed")
    }
    if fetchedResults.count > 0 {

        for user in fetchedResults{
            let aUser:User = user
            if (aUser.uniqueId! == userIdentifierString as String) {
                let fullName = aUser.firstName! + " " + aUser.lastName!
                print("selected user full name: " + (fullName as String))
            }
            else {
                continue
            }
        }
    }

}
}

到目前为止一直很好..

但是现在,我想从数据库中取出userName并通过segue locationsSegue发送到LocationTableViewController

当我从ListUserTableViewController转换到ConfigureTableViewController时,我有userName,但是当我离开ConfigureTableViewController并转到LocationTableViewController时,我失去了fullName的范围。

我必须以某种方式将计算出的fullName的值存储在某个永久存储器中,所以我应该将它放在CoreData的表中。我想避免这种情况,这似乎很多工作。

我可以使用某种委托链接,因此LocationTableViewController可以实现在ConfigureTableViewController中定义的委托,并从已经实现并在其范围内具有fullName的其他UserSelectionDelegate中提取数据。

请指教,如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

令人困惑的问题陈述:

  

我失去了fullName的范围

您需要保存对NSManagedObjectContext对象的任何更改,并在下一个视图控制器中检索这些更改。如果下一个视图控制器使用相同的User,您也可以传递相同的User对象。

然后您拥有全名的所有数据。

这通常作为pip install beautifulsoup4 类的自定义方法实现,它检查自己的名字和姓氏,并返回格式正确的字符串。