我有一个启用了ConfigureTableViewController的tableview,它有两个静态单元Users和Locations。 用户tableview单元格通过usersSegue连接到ListUserTableViewController。 位置tableview单元格通过segue locationsSegue
连接到LocationTableViewControllerListUserTableViewController有一个协议:
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中提取数据。
请指教,如何解决这个问题?
答案 0 :(得分:0)
令人困惑的问题陈述:
我失去了fullName的范围
您需要保存对NSManagedObjectContext
对象的任何更改,并在下一个视图控制器中检索这些更改。如果下一个视图控制器使用相同的User
,您也可以传递相同的User
对象。
然后您拥有全名的所有数据。
这通常作为pip install beautifulsoup4
类的自定义方法实现,它检查自己的名字和姓氏,并返回格式正确的字符串。