Obj - C: la difficulté à créer un UITableView qui met à jour les cellules d'une API HTTP en temps réel (un à la fois)

StackOverflow https://stackoverflow.com/questions/991127

Question

Je suis un vote API HTTP - il renvoie un élément à la fois, en temps réel (environ toutes les 4 secondes). Comme chaque élément est reçu, je voudrais une nouvelle cellule UITableView à être rempli. La liste complète des articles reçus doit rester dans une propriété de classe, je devine un NSMutableArray. Quelle est la meilleure façon d'initialiser un NSMutableArray comme une propriété de classe, mettez à jour comme de nouvelles informations sont, puis utiliser le compte pour mettre à jour une nouvelle UITableViewCell? Voilà comment j'ajouter du contenu à un NSMutableDictionary:

NSMutableDictionary *messageContents = [[NSMutableDictionary alloc] init];
[messageContents retain];
[messageContents setValue:messageText forKey:@"text"];
[messageContents setValue:image forKey:@"image"];
[self addMessageToDataArray:messageContents];

Voici les objets de remplissage de la méthode dans le tableau:

- (void)addMessageToDataArray:(NSArray *)messageDictionary {
    [self.messageDataArray addObject:messageDictionary];
    NSLog(@"count = %@", [self.messageDataArray count]);
    [self reloadTableData];
}

A ce point, appelant compter sur la propriété de la classe messageDataArray se bloque l'application. Je suis très habitués à travailler avec des tableaux en Actionscript, Obj-C est évidemment tout à fait différent. S'il vous plaît expliquer la méthode pour instancier un NSMutableArray comme une propriété de classe, avec NSMutableDictionary de remplissage, puis de trouver le nombre NSMutableArray (qui sera mise à jour dynamique en temps réel), je peux utiliser cette information pour mettre à jour un UITableView (à la volée).

Ou ... me dire que je suis stupide et proposer une solution beaucoup plus facile.

Était-ce utile?

La solution

D'après votre description, je suppose que vous n'êtes pas allouer le messageDataArray avant de l'utiliser.

La classe fonction init pour votre point de vue de la table (contrôleur?) Devrait avoir une ligne comme celui-ci

messageDataArray = [[NSMutableArray alloc] initWithCapacity:20];

Il est également intéressant de vérifier que vous avez [messageDataArray release]; dans votre méthode dealloc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top