【问题标题】:How To Store a CBPeripheral For Use in Other Views如何存储 CBPeripheral 以在其他视图中使用
【发布时间】:2013-07-01 13:42:12
【问题描述】:

我在视图控制器 SViewController 中设置了一些 BLE 连接,我需要存储外围设备以供其他视图控制器使用。我尝试创建一个 NSUserDefault 对象并将外围设备存储在其中,但我收到了错误"Attempt to insert non-property value",并且它从未插入。然后我尝试将它包装在一个 NSData 对象中并将其存储在 NSUserDefaults 中,但收到错误 "-[CBConcretePeripheral encodeWithCoder:]: unrecognized selector sent" 并且应用程序崩溃了。所以那肯定是行不通的。我也尝试过将三个 CBPeripheral 变量设为全局变量,但我遇到了很多问题。 (我对编程还是很陌生)。然后我研究了以某种方式缓存它们,但在这里读到它不会起作用并且不要浪费时间。

有谁知道如何存储 CBPeripheral 对象以便我可以访问它并在其他视图控制器中初始化它?

【问题讨论】:

  • 您尝试过单例方法吗?您是否能够在视图之间保持蓝牙连接,还是在您想使用它时必须重新连接?

标签: ios objective-c core-bluetooth bluetooth-lowenergy cbperipheral


【解决方案1】:

创建一个实现所有CBCentralManagerDelegate 方法的单例。然后只需为该单例创建您自己的委托方法来向您的视图控制器发送消息。这样您就可以在任何课程中轻松使用它。至于存储 CBPeripherals,您可以将它们放在单例中包含的 NSMutableArray 中。

查看此链接以了解如何Create a Singleton Instance

(哦,你说“在其他视图控制器中初始化它”..这不应该是这种情况。但也许你只是想存储CFUUIDRef?如果你这样做那个,你可以打电话给retrievePeripherals:(NSArray*),然后把外围对象取回你想要的任何地方。如果这就是你的意思......)

【讨论】:

    猜你喜欢
    • 2021-02-12
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多