2010-08-19 19 views
0

Je développe une application qui utilise des données de base pour enregistrer et récupérer des données.Définir le nombre de badge d'application par rangées dans la vue de table avec les données de base

Maintenant, je voudrais ajouter un numéro de badge sur l'icône de l'application dans l'écran d'accueil mais j'ai quelques problèmes ...
J'ai essayé ce code:

NSInteger section = [self.tableView numberOfSections]; 
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section]; 
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:[sectionInfo numberOfObjects]; 

Ce code ne fonctionne pas, mais je Je ne sais pas comment faire ...
Quel code dois-je écrire et où? Inside AppDelegate ou RootViewController? Et dans quelle méthode?

Merci à tous pour votre aide!

Répondre

1
NSInteger section = [self.tableView numberOfSections]; 

Ce numéro de section n'est pas valide; ils vont de 0 à numberOfSections-1.

+0

Merci beaucoup! J'ai essayé avec ce code: Section NSInteger = [self.tableView numberOfSections] - 1; \t id sectionInfo = [[sections self.fetchedResultsController] objectAtIndex: section]; \t [[UIApplication sharedApplication] setApplicationIconBadgeNumber: [sectionInfo numberOfObjects]]; Et fonctionne bien! :) Je l'ai mis dans la méthode viewWillAppear parce que le nombre se met à jour chaque fois que j'ajoute un nouvel objet! Merci! ;) – matteodv

1
NSInteger section = [[self tableView] numberOfSections]; 

Cela va revenir 1 ou plus. Pas de valeur à brancher sur [[[self fetchedResultsController] sections] objectAtIndex:section]. Vous devriez lui donner une section réelle (zéro ou plus) et non le nombre total de sections.

En outre, vous pouvez mettre un point d'arrêt sur votre attribution de la variable sectionInfo et assurez-vous que vous ne récupérez pas un zéro. Vous pouvez également mettre un débogage après le sectionInfo pour vous assurer que vous récupérez quelque chose de significatif.

S'il est nul ou retourne zéro, votre badge n'apparaîtra pas.