2014-07-09 3 views
0

J'ai un objet qui doit être initialisé avec des données du réseau et qui n'a pas vraiment de sens sans les données téléchargées. Mais il me semble que faire un appel réseau asynchrone dans sa méthode init n'est pas une bonne idée car l'objet ne sera pas prêt à user tout de suite et cela pourrait causer de la confusion. Dois-je seulement utiliser une méthode de base init qui va alloc init toutes ses propriétés pour créer un objet vide, et avoir d'autres méthodes (non init) remplir les données du réseau qui seront appelées explicitement par d'autres objets (tels que le contrôleur de vue en utilisant cet objet)? Quel serait un bon moyen d'aborder cela?Objet Init avec données téléchargées de manière asynchrone

+0

Pourquoi ne pas télécharger vos données, le stockage temporaire, il dans une variable jusqu'à ce que vous Initialiser votre objet avec sa valeur? –

+0

Quel est l'objet utilisé? Quelles sont les données? Est-ce logique/pouvez-vous télécharger à l'avance? Un objet espace réservé est-il utile lors du téléchargement des données? Un téléchargement doit-il être démarré et l'objet dans son ensemble est renvoyé de manière asynchrone? – Wain

+0

C'est une classe "Utilisateur" qui a et peut ajouter/supprimer des amis. La liste d'amis est stockée dans le backend, de sorte que la propriété '_friends' doit être remplie à partir du réseau. Je veux encapsuler toute ma logique dorsale dans la classe afin que le contrôleur de vue ne s'en soucie pas. Pour le moment, j'ai une méthode 'init' qui' 'allote' 'les propriétés, les méthodes' addFriend' et 'removeFriend', et une méthode' getFriendsFromBackendWithCompletionHandler'. – p4sh4

Répondre

0

Je pense que la solution vient d'avoir le bon ordre de l'exécution de code:

1) Aller au réseau et d'extraction de données (afficher l'indicateur de acivity utilisateur dans ce temps)

2) réponse de retour du serveur -> fetch la réponse dans votre objet

3) Afficher les données ou utiliser

Questions connexes