我是一个寻找一种方式来读取数据中的第一个视图控制器在另一个视图控制器如何读取其他VC中第一个VC的数据集?
设置在我的拳头VC我在故事板
class ScannerViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, AVCaptureMetadataOutputObjectsDelegate {
var scannedVisitors = [Visitor]()
.....
....
override func viewDidLoad() {
super.viewDidLoad()
// test data, will be provided server side
var visitor = Visitor(visitorName: "John", visitorCompany: "google", visitorPlace: "San", visitorPhone: "94888484", visitorEmail: "[email protected]")
scannedVisitors += [visitor]
visitor = Visitor(visitorName: "Matt", visitorCompany: "apple", visitorPlace: "Tokyo", visitorPhone: "94888484", visitorEmail: "[email protected]")
scannedVisitors += [visitor]
现在首先视图显示scannedVisitors
但是在其他的viewController /视图我想再次列出一个表视图中的所有scannedVisitors,为了这个,我有
class ListVisitorsVC: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
var scannedVisitorsArr = [Visitor]()
override func viewDidLoad() {
super.viewDidLoad()
// first try this, later use NSUserDefaults or Core Data
let firstVC = ScannerViewController()
scannedVisitorsArr = firstVC.scannedVisitors
print("Visitors \(scannedVisitorsArr)")
}
但scannnedVisitorsArr是空的?
1 /我该如何修复空的scannedVisitorsArr?我应该在我的第一个视图控制器中有独立的填充scannedVisitors函数吗?
2 /使用NSUserDefaults时是否存在大小限制?
[编辑] 测试与添加的功能,第一个VC
func readAndPopulateData(){
var visitor = Visitor(visitorName: "John", visitorCompany: "google", visitorPlace: "San", visitorPhone: "94888484", visitorEmail: "[email protected]")
scannedVisitors += [visitor]
visitor = Visitor(visitorName: "Matt", visitorCompany: "apple", visitorPlace: "Tokyo", visitorPhone: "94888484", visitorEmail: "[email protected]")
scannedVisitors += [visitor]
}
和
override func viewDidLoad() {
super.viewDidLoad()
self.readAndPopulateData()
我在其他VC
let firstVC = ScannerViewController()
firstVC.readAndPopulateData()
scannedVisitorsArr = firstVC.scannedVisitors
,但现在这只是返回
Visitors [folder_name.Visitor, folder_name.Visitor]
而不是数据集?
[编辑] 阅读数据容器单例,因为它看起来像它可用于此。但是我读了关于使用单身人士的不同pos/neg故事?欢迎任何有关主题数据容器单例的提示。
不NSUserDefaults的使用用于此目的,这不是它是什么。要读取该数据集,可以将它传递给下一个VC,或者使用导航控制器viewcontrollers数组访问最后一个VC,从它们访问数据集 – NSNoob
这是空的,因为ScannerViewController没有运行viewDidLoad方法。如果你在这里设置了断点,你会看到 –
“当你继续下去时将它传递给你的下一个VC”,但在我的情况下,它是“秒”的继续。首先我有一个细节视图的segue,在这里我有一个按钮,它将转到表列表视图。 (=这不能与第一个VC相同,因为除了表视图以外,第一个VC拥有更多的UI元素)。 你可以给我一些下一代VC segue和导航控制器viewcontrollers数组的代码示例吗? – alex