Comment stocker un périphérique CBP à utiliser dans d'autres vues

J'ai installé quelques connections BLE dans mon controller de vue, SViewController, et j'ai besoin de stocker les périphériques pour une utilisation dans d'autres controllers de vue. J'ai essayé de créer un object NSUserDefault et de stocker les périphériques, mais j'ai reçu l'erreur "Attempt to insert non-property value" , et elle n'a jamais été insérée. J'ai ensuite essayé de l'encapsuler dans un object NSData et de le stocker dans NSUserDefaults, mais j'ai obtenu l'erreur "-[CBConcretePeripheral encodeWithCoder:]: unrecognized selector sent" et l'application s'est "-[CBConcretePeripheral encodeWithCoder:]: unrecognized selector sent" . Donc, cela n'a certainement pas fonctionné. J'ai également essayé de rendre les trois variables CBPeripheral globales, mais j'ai rencontré beaucoup de problèmes avec ça. (Je suis encore très novice en programmation) J'ai ensuite regardé en quelque sorte les mettre en cache, mais j'ai lu ici que ça ne marchera pas et que je ne perdrai pas mon time.

Est-ce que quelqu'un sait comment stocker un object CBPeripheral afin que je puisse y accéder et l'initialiser dans d'autres controllers de vue?

Créez un singleton qui implémente toutes vos methods CBCentralManagerDelegate . Ensuite, créez simplement vos propres methods de délégué pour ce singleton pour envoyer un message à vos viewControllers. De cette façon, vous pouvez facilement l'utiliser dans n'importe quelle class. En ce qui concerne le stockage des CBPeripherals, vous pouvez simplement les placer à l'intérieur d'un NSMutableArray contenu dans votre singleton.

Consultez ce lien sur la création d'une instance Singleton

(Oh et pour où vous dites "Initialiser dans d'autres controllers de vue" .. Cela ne devrait jamais être le cas.) Mais peut-être que vous voulez juste stocker le CFUUIDRef ? Si vous faites cela, vous pouvez simplement appeler resortingevePeripherals:(NSArray*) et ramenez l'object périphérique où vous voulez, si c'est ce que vous voulez dire …)