2010-09-09 5 views
0

J'écris une application qui utilise un UIPickerView et stocke chaque changement aux sélecteurs dans les données de base (le nom de l'application est Blood Wizard dans le magasin iTunes). J'ai eu un certain succès jusqu'à présent que ma méthode de -didSelectRow ajoute avec succès de nouveaux objets aux données de base via le code suivant:Comment récupérer le dernier objet à partir des données de base?

// Get context, entity, managedobject from the fetchedResultsController 

    [newManagedObject setValue:[NSDate date] forKey:@"timeStamp"]; 

    //Iterates through each component and sets the value to the appropriate key 
    for (int j=0; j < [LifeCounter numberOfComponents]; j++) { 
     NSString *keyName = [NSString stringWithFormat:@"lifeTotal%i",j]; 
     [newManagedObject setValue:[NSNumber numberWithInteger:[LifeCounter selectedRowInComponent:j]] forKey:keyName]; 
    } 

    NSError *error; 
    if (![context save:&error]) { 
     NSLog(@"Error saving entity: %@", [error localizedDescription]); 
    } 

Cependant, dans mon -viewDidLoad je ne peux pas sembler obtenir des données essentielles pour charger valeurs du dernier objet. Voilà ce que j'ai jusqu'à présent:

lifeCounterArray = [[NSMutableArray alloc] init]; 

for (int i = 200; i >= -200; i--) 
{ 
    NSString *myString = [NSString stringWithFormat:@"%i", i]; 
    [lifeCounterArray addObject:myString]; 
} 

//Hopefully this retrieves the latest values from the core data store 
NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; 

//Iterates through each component, setting it to the stored value in core data 
for (int j=0; j < [LifeCounter numberOfComponents]; j++) { 
    NSString *keyName = [NSString stringWithFormat:@"lifeTotal%i",j]; 
    NSInteger row = [[managedObject valueForKey:keyName] integerValue] +180; 
    [LifeCounter selectRow:row inComponent:j animated:NO]; 
} 

Maintenant, je suis sûr de ma méthode fetchedResultsController travaille depuis que je peux voir la création d'objets (je peux les voir dans la base de données SQLite) mais peut-être je ne J'utilise même un fetchedResultsController puisque je me soucie vraiment du dernier objet. Je serais heureux de poster ma méthode fetchedResultsController si nécessaire, merci pour l'aide à l'avance.

Répondre

0

Si vous avez modifié les données depuis la dernière interrogation, pourriez-vous supprimer le cache de fetchedResultsController?

[NSFetchedResultsController deleteCacheWithName:@"(cachename)"]; 

Le nom du cache est défini dans initWithFetchRequest.

Si cela ne fonctionne pas, essayez de mettre le paramètre fetchedResultsController à zéro après les changements de base de données qui le forceront à refaire la demande.

+0

Oui, ni l'un ni l'autre n'a fonctionné. Au lieu d'essayer même de supprimer le cache, je l'ai simplement mis à zéro. Je suis également sûr à 95% que le cache est mis à jour automatiquement de toute façon et la seule raison pour laquelle vous le supprimez est de libérer de la mémoire. J'ai également essayé de mettre le fetchedResultsController à zéro juste avant le chargement et cela n'a pas fonctionné non plus. Merci d'avoir essayé. –