2010-05-23 4 views
0

J'ai une application de base d'album photo, sur la première vue une liste d'albums est affichée avec un sous-titre montrant combien d'images sont dans chaque album. Tout fonctionne pour ajouter des albums et ajouter des images aux albums. Le problème est que les lignes de comptage d'images sont précises à chaque chargement de l'application, mais je ne peux pas les mettre à jour pendant l'exécution.données ne se rechargent pas dans tableview à partir des données de base sur mise à jour mineure

Le viewDidLoad suivant renseigne correctement toutes les lignes du tableview lorsque les charges d'application:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Set the title. 
    self.title = @"Photo albums"; 

    // Configure the add and edit buttons. 
    self.navigationItem.leftBarButtonItem = self.editButtonItem; 

    addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addAlbum)]; 
    addButton.enabled = YES; 
    self.navigationItem.rightBarButtonItem = addButton; 

    /* 
    Fetch existing albums. 
    Create a fetch request; find the Album entity and assign it to the request; add a sort descriptor; then execute the fetch. 
    */ 
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Album" inManagedObjectContext:managedObjectContext]; 
    [request setEntity:entity]; 

    // Order the albums by name. 
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"albumName" ascending:NO]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
    [request setSortDescriptors:sortDescriptors]; 
    [sortDescriptor release]; 
    [sortDescriptors release]; 

    // Execute the fetch -- create a mutable copy of the result. 
    NSError *error = nil; 
    NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy]; 
    if (mutableFetchResults == nil) { 
     // Handle the error. 
    } 

    LocationsAppDelegate *mainDelegate = (LocationsAppDelegate *)[[UIApplication sharedApplication] delegate]; 

    // Set master albums array to the mutable array, then clean up. 
    [mainDelegate setAlbumsArray:mutableFetchResults]; 
    [mutableFetchResults release]; 
    [request release]; 
} 

Mais quand je lance un code similaire à l'intérieur viewdidappear, rien ne se passe:

{ 
    /* 
    Fetch existing albums. 
    Create a fetch request; find the Album entity and assign it to the request; add a sort descriptor; then execute the fetch. 
    */ 
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Album" inManagedObjectContext:managedObjectContext]; 
    [request setEntity:entity]; 

    // Order the albums by creation date, most recent first. 
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"albumName" ascending:NO]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
    [request setSortDescriptors:sortDescriptors]; 
    [sortDescriptor release]; 
    [sortDescriptors release]; 

    // Execute the fetch -- create a mutable copy of the result. 
    NSError *error = nil; 
    NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy]; 
    if (mutableFetchResults == nil) { 
     // Handle the error. 
    } 

    LocationsAppDelegate *mainDelegate = (LocationsAppDelegate *)[[UIApplication sharedApplication] delegate]; 

    // Set master albums array to the mutable array, then clean up. 
    [mainDelegate setAlbumsArray:mutableFetchResults]; 
    [self.tableView reloadData]; 
    [mutableFetchResults release]; 
    [request release]; 
} 

Toutes mes excuses si j'ai J'ai raté la réponse à cette question ailleurs, mais qu'est-ce qui me manque?

Répondre

2

Pour résoudre les problèmes, placez les instructions NSLog dans quelques endroits dans -viewDidAppear:. Vous utiliseriez ces instructions de journal pour vous assurer que cette méthode est correctement appelée et pour examiner le contenu de mutableFetchResults, au moins.

+0

Merci, je n'avais pas sauvegardé les données à stocker pendant l'exécution, je sauvegardais seulement les changements à la sortie. Fonctionne bien maintenant. –

Questions connexes