Как сохранить CBPeripheral для использования в других представлениях
Я настраиваю несколько подключений BLE в контроллере просмотра SViewController, и мне нужно хранить периферийные устройства для использования в других контроллерах представлений. Я попытался создать объект NSUserDefault и сохранить там периферийные устройства, но я получил ошибку "Attempt to insert non-property value"
и никогда не вставил ее. Затем я попробовал обернуть его в объекте NSData и сохранить его в NSUserDefaults, но получил ошибку "-[CBConcretePeripheral encodeWithCoder:]: unrecognized selector sent"
, и приложение разбилось. Так что определенно не получилось. Я также попытался сделать глобальные переменные CBPeripheral глобальными, но я столкнулся с этой проблемой. (Я все еще очень новичок в программировании). Затем я заглянул в их кэширование, но прочитал здесь, что это не сработает и не будет терять время.
Кто-нибудь знает, как сохранить CBPeripheral объект, чтобы я мог получить к нему доступ и инициализировать его в других контроллерах представления?
Ответы
Ответ 1
Создайте синглтон, который реализует все ваши методы CBCentralManagerDelegate
. Затем просто создайте свои собственные методы делегирования для этого синглтона, чтобы отправить сообщение вашим диспетчеру просмотра. Таким образом, вы можете легко использовать его в любом классе. Что касается хранения CBPeripherals, вы можете просто разместить их внутри NSMutableArray
, содержащихся внутри вашего синглета.
Посмотрите эту ссылку о том, как Создать экземпляр Singleton
(О, и где вы говорите "Инициализируйте его в других диспетчерах просмотра" . Это не должно быть так. Но, может быть, вы просто хотите сохранить CFUUIDRef
? что вы можете просто вызвать retrievePeripherals:(NSArray*)
и вернуть периферийный объект туда, где хотите. Если это то, что вы имеете в виду...)