Swift 4 save CBPeripherals数组返回控制器时保存状态

Swift 4 save CBPeripherals array save state when returning to controller

所以我正在使用蓝牙连接,并且我有一系列连接的设备(一些传感器)。设备中的问题是,只要有东西连接到该设备,CBCentralManager 扫描就找不到它们(这就是它们的工作方式)。这就是为什么我必须制作一个连接的 CBPeripherals 数组,我想在 TableView 中显示它,在那里我也显示未连接的设备(扫描时发现的设备)。

现在,问题是,每当我将某些内容放入 connectedDevices:[CBPeripheral] 数组并从我的控制器返回,而不是 return 到它时,connectedDivecies 数组是空的。那是绝对正常的,我理解。

所以问题是,我如何在 swift 中存储该数组,以便每当我 return 到该控制器时它都包含相同的数据,我的意思是 - 相同的 CBPeripheral 对象?我尝试使用 UserDefaults 进行此操作,但似乎没有任何效果。

请给我一些关于如何管理它的想法

只需在 AppDelegate 中保留您的设备列表

然后使用类似

的方式访问它
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let aVariable = appDelegate.someVariable

尽管关于是否使用 App Delegate 作为单例来存储对象有很多 discussion。 恕我直言,存储一个小对象数组无论如何都不会损害您的应用程序