10

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

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

4

1 回答 1

13

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

查看有关如何创建单例实例的链接

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

于 2013-07-03T21:32:24.267 回答