【问题标题】:Swift 4 save CBPeripherals array save state when returning to controller [duplicate]返回控制器时,Swift 4保存CBPeripherals数组保存状态[重复]
【发布时间】:2018-05-22 21:06:34
【问题描述】:

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

现在,问题是,每当我将一些东西放入我的 connectedDevices:[CBPeripheral] 数组并从我的控制器返回,然后返回到它时,connectedDivecies 数组是空的。这很正常,我理解。

所以问题是,我怎样才能快速存储该数组,以便每当我返回到该控制器时它保存相同的数据,我的意思是 - 相同的 CBPeripheral 对象?我尝试使用 UserDefaults 来做,但似乎没有任何效果。

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

【问题讨论】:

  • 您可以为此使用单例(这是一种设计模式)。创建一个“唯一”的类,这意味着它总是返回管理 CBCentral 的相同对象(这就是它被称为单例的原因)。
  • 因此,每当我将连接的设备数组放入该类的单例对象中时,当我实例化该单例时,应用程序类中的任何位置都会在整个应用程序生命周期中拥有该数组?

标签: swift bluetooth savestate cbperipheral cbcentralmanager


【解决方案1】:

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

然后使用类似的东西访问它

let appDelegate = UIApplication.shared.delegate as! AppDelegate
let aVariable = appDelegate.someVariable

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

【讨论】:

  • 我尝试使用单例。不管怎样,谢谢。如果它不起作用,我会做 AppDelegate 解决方案
猜你喜欢
  • 2018-04-23
  • 2022-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多