Dans mon projet, j'ai des objets que je montre depuis un serveur, appelons-les Foo. Quand je reçois mon flux Foo, je les analyse dans une sous-classe NSMutableDictionary appelée RemoteFoo, et transmets ces objets RemoteFoo tout autour de l'application pour afficher les données.Abstract NSManagedObject et NSDictionary
Si l'utilisateur finit par vouloir télécharger un RemoteFoo, je crée ensuite une entité NSManagedObject de base de données appelée Foo, et l'instancie à l'aide des valeurs de RemoteFoo. Tout cela fonctionne. Le problème que j'ai est que si je veux qu'une méthode fonctionne sur un RemoteFoo et un Foo, je dois le dupliquer dans RemoteFoo.m et Foo.m. En outre, mon application si plein de Dupliquons de initialisation comme:
- (id)initWithFoo:(Foo *)foo;
- (id)initWithRemoteFoo:(RemoteFoo *)foo;
Comment puis-je éviter tout ce code-duplication tout en séparant encore la RemoteFoo à distance temporaire des entités Foo-données de base qui représentent Foo l'utilisateur a enregistré localement?
RemoteFoos changent constamment cependant, et sont demandés dans différentes listes à partir du serveur de plusieurs façons, par le biais de multiples points dans l'application . Si je les sauvegarde tous, je devrais constamment mettre à jour chaque enregistrement Foo que j'en ai, car les détails de chaque RemoteFoo peuvent changer. Je pense que cela ajouterait beaucoup de frais généraux à la performance de mon application. Sans oublier qu'il y a des milliers de RemoteFoo, mais seulement des dizaines de Foo que l'utilisateur va télécharger. – coneybeare
Cela semble définitivement être le moyen le plus facile ... pensez-vous qu'il y aurait un coup de performance en l'utilisant comme je le décris dans le commentaire ci-dessus? – coneybeare
Les données de base ont été fortement ajustées pour la performance. Vous ne pouvez pas vous-même être plus efficace avec votre solution homebrew qu'avec CoreData. – Jaanus