在 ViewController 之间传递 NSManagedObject
Posted
技术标签:
【中文标题】在 ViewController 之间传递 NSManagedObject【英文标题】:Passing a NSManagedObject between ViewControllers 【发布时间】:2016-11-22 10:59:30 【问题描述】:我正在尝试在 2 个 ViewControllers
之间传递一个 NSManagedObject
。
为此,我使用了一个全局变量。
在第一个 viewcontroller
我有,在顶部(作为全局变量):
var choosenItem : NSManagedObject? = nil
我建立了我的表格视图,我有这个:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
let choosenOne = listOfLands[indexPath.row]
let choosenItem = listOfLands[indexPath.row]
let viewController = storyboard?.instantiateViewController(withIdentifier: "ViewController2")
self.navigationController?.pushViewController(viewController!, animated: true)
print(choosenOne.objectID)
print(choosenItem.objectID)
当我打印选择的 objectId 时,我得到了它们。所以我认为在这个ViewController
中一切正常。
在 ViewController2 我有这个:
override func viewDidLoad()
print(thatLand?.objectID) //result is nil
现在我不确定为什么我在第二个 ViewController
中得到 nil。
有没有办法像这样通过NSManagedObject
?
【问题讨论】:
【参考方案1】:您需要通过将choosenItem
分配给ViewController2
的thatLand
属性来传递它,还需要将UIViewController
显式转换为ViewController2
。
let viewController = storyboard?.instantiateViewController(withIdentifier: "ViewController2") as! ViewCotroller2 //Cast as ViewController name
//Now set thatLand property with your array's selected object before pushing it to Navigation stack
viewController.thatLand = listOfLands[indexPath.row]
self.navigationController?.pushViewController(viewController!, animated: true)
【讨论】:
做到了。现在,当我执行此“viewController.thatLand = listOfLands[indexPath.row]”时,我收到一条消息说 ViewController2 没有成员“thatLand”。如何在 vc2 中初始化“thatLand”? @H.N.我说的是这个print(thatLand?.objectID)
,你在你的问题上提到了。
我也是。你告诉过我吗。我认为没关系。但现在我得到“ViewController2 类型的值作为非成员 thatLand”。
@H.N.如果没有,则创建一个var thatLand : NSManagedObject?
@H.N.欢迎朋友:)以上是关于在 ViewController 之间传递 NSManagedObject的主要内容,如果未能解决你的问题,请参考以下文章
故事板 Segue 与委派。哪种方法更适合在 ViewController 之间传递数据
在 Swift 中的 ONE ViewController 中的视图之间传递数据
如何在 PageViewController 和 ViewController 之间传递数据?
如何使用 StoryBoard 在 NavigationController 和 ViewController 之间传递值?
在 TapBarController 内的 ViewController 和 NavigationController 之间传递值