【问题标题】:Passing variables across static tableView cells via CoreData and delegates通过 CoreData 和委托在静态 tableView 单元格之间传递变量
【发布时间】:2017-01-01 22:25:50
【问题描述】:

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

ListUserTableViewController 有一个协议:

    protocol UserSelectionDelegate{
      func userDidSelectUser(userIdentifier:NSString)
    }

我通过实现委托 UserSelectionDelegate 从 ListUserTableViewController 中选择用户并将其传递给 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
            }
        }
    }

}
}

到目前为止一切顺利..

但是现在,我想从数据库中提取用户名并通过 segue 位置发送到 LocationTableViewController

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

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

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

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

【问题讨论】:

    标签: ios uitableview core-data tableviewcell


    【解决方案1】:

    令人困惑的问题陈述:

    我失去了 fullName 的范围

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

    那么你就有了全名的所有数据。

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

    【讨论】:

    • 我正在尝试同时传递一个用户 ID,因此我可以从数据库中获取用户名。您的回答给出了部分解决方案。但我会接受的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    相关资源
    最近更新 更多