10

Ho impostato alcune connessioni BLE nel mio controller di visualizzazione, SViewController, e ho bisogno di memorizzare le periferiche per l'uso in altri controller di vista. Ho cercato di creare un oggetto NSUserDefault e memorizzare le periferiche in là, ma ho ottenuto l'errore "Attempt to insert non-property value", e non è mai inserito. Ho poi provato avvolgendolo in un oggetto NSData e riporlo in NSUserDefaults, ma ottenuto l'errore "-[CBConcretePeripheral encodeWithCoder:]: unrecognized selector sent" e l'applicazione caduto. Quindi sicuramente non ha funzionato. Ho anche provato a rendere globali le tre variabili CBPeripheral, ma mi sono imbattuto in un sacco di problemi. (Sono ancora molto nuovo alla programmazione). Ho quindi esaminato in qualche modo la loro memorizzazione nella cache, ma ho letto qui che non funzionerà e non perder tempo.Come memorizzare un CBPeripheral per l'uso in altre viste

Qualcuno sa come memorizzare un oggetto CBPeripheral in modo che possa accedervi e inizializzarlo in altri controller di visualizzazione?

+0

Hai provato l'approccio Singleton? Sei in grado di mantenere viva la connessione Bluetooth tra le visualizzazioni o devi ricollegarti quando vuoi usarla? –

risposta

12

Creare un singleton che implementa tutti i metodi CBCentralManagerDelegate. Quindi basta creare i propri metodi di delega per quel singleton per inviare messaggi ai tuoi viewControllers. In questo modo puoi facilmente usarlo in qualsiasi classe. Per quanto riguarda la memorizzazione dei CBPeripherals, si può semplicemente inserirli in di un NSMutableArray contenuto all'interno del vostro Singleton.

controlla questo link su come Create a Singleton Instance

(Oh, e per cui si dice "inizializzare in altri controller di vista" ..che non dovrebbe mai essere il caso. Ma forse significa solo per memorizzare the CFUUIDRef? Se lo fai, puoi semplicemente chiamare retrievePeripherals:(NSArray*) e recuperare l'oggetto periferico dove vuoi.Se questo è ciò che intendi ...)

+0

Estremamente utile, grazie mille! – John

+0

No problemooooooooo –