2011-07-12 2 views
0

Im assez nouveau pour Objective-C. Je suis en train de passer un tableau d'un NSObject à un contrôleur de vue (pas ma racine). Le fichier objet NS se termine avec le tableau poolArray. J'ai également utilisé self.poolArray = nil; dans void En passant cela à mon contrôleur de vue, quelles sont les étapes à suivre?Passer un tableau de NSObject à un contrôleur de vue

Éditer: Pour être plus spécifique à ma cause, que se passerait-il si je ne faisais que gérer deux contrôleurs de vue?

-(void)createData { 
    //poolFixtures being the text within each cell of my table view. 
    NSMutableArray *poolFixtures; 

    groupSections=[[NSMutableArray alloc] initWithObjects: @"Pool Stages", nil] 

    poolFixtures=[[NSMutableArray alloc] init]; 


    [poolFixtures addObject:[[NSMutableDictionary alloc] 
    initWithObjectsAndKeys:@"This is a name",@"name",nil]]; 

    fixtureData=[[NSMutableArray alloc] initWithObjects: poolFixtures, nil]; 

    [poolFixtures release]; 
} 

J'ai une configuration similaire pour mon deuxième contrôleur de vue. Cependant, les titres nécessaires pour le second nécessitent que je télécharge les données à partir d'un fichier html, les parser dans le format que je veux etc. Quand il est utilisé dans le second contrôleur, il prend beaucoup de temps (je présume à cause du temps de chargement html) . Ce que j'essaie d'accomplir (ce que je pensais pouvoir faire avec un NSobject), c'est de commencer la collecte de données dès que l'utilisateur ouvre l'application; Ainsi, au moment où l'utilisateur arrive au second contrôleur de vue, il est chargé et prêt. Par conséquent je me demande si je pourrais faire le téléchargement, et l'analyse dans le contrôleur de vue de racine, et envoyer le tableau au deuxième contrôleur de vue pour l'usage si nécessaire. Je pensais pouvoir utiliser la partie createData de mon implémentation racine pour le faire.

+0

Je pense que vous devez poster du code pour obtenir une réponse significative. –

+0

A fait, merci pour le conseil. –

Répondre

1

Pour cela, ma suggestion est la mise en œuvre déléguer des méthodes. Je suppose que vous connaissez les protocoles dans l'objectif C. More info about delegate pattern.

Étapes à suivre. 1. Une fois votre application lancée, le contrôleur de vue définit le délégué et commence le téléchargement dans le fil d'arrière-plan. 2. Une fois le téléchargement terminé, les données téléchargées seront définies via les méthodes de délégation.

J'espère que vous comprendrez mon point. Tout doute, postez le ici.

+0

J'ai regardé le lien vers les pommes URLCache (http://developer.apple.com/library/ios/#samplecode/URLCache/Introduction/Intro.html). Est-ce dans le sens de ce que je veux accomplir? –

0

je peux être vous malentendu, mais c'est ce que vous faites habituellement ....

Object obj = [[Object alloc] init]; 
ViewController *vc = [[ViewController alloc] initWithNibName:@"NibName" bundle:nil]; 
// this is a public property of the viewcontroller 
vc.array = [object methodThatReturnsArray]; 
[self.navigationController pushViewController:vc]; 

C'est ce que le methodThatReturnsArray ressemblerait

-(NSArray *)methodThatReturnsArray 
{ 
    NSArray* array = [[[NSArray alloc] init] autorelease]; 
    // some code here that adds to the usefulness of the array 
    return array; 
} 
+0

L'instruction return doit être comme 'return [array autorelease]'. – Ilanchezhian

+0

@Gomathi 'array' est déjà' autorelease'd. Pour ajouter, inutile de créer un objet immuable vide. –

+0

@Gomathi: il a une autorelease sur sa déclaration init. Faire [array autorelease] ne fera rien. – ColdLogic

Questions connexes