J'ai une application qui enregistre le texte et la date d'un UIDatePicker, puis affiche cette note si vous êtes revenu dans cette date dans le UIDatePicker.DatePicker Arrêt CoreData Travail
Cela fonctionne très bien! Seulement, j'ai trouvé que le réglage de la date UIDatePicker à aujourd'hui arrête le travail de CoreData!
Ce n'est que lorsque j'exécute cette ligne setDate que les données de base ne peuvent plus fonctionner. L'application fonctionne bien sans se bloquer, elle n'enregistre aucune donnée. Si je commente cette ligne, c'est un charme. Mais j'ai besoin d'avoir UIDatePicker aujourd'hui quand l'application se charge.
J'utilise quand l'application démarre:
NSDate *now = [[NSDate alloc] init];
[datePicker setDate:now];
Ce iront chercher la note:
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
NSEntityDescription *testEntity = [NSEntityDescription entityForName:@"DatedText" inManagedObjectContext:self.managedObjectContext];
[fetch setEntity:testEntity];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"dateSaved == %@", datePicker.date];
[fetch setPredicate:pred];
NSError *fetchError = nil;
NSArray *fetchedObjs = [self.managedObjectContext executeFetchRequest:fetch error:&fetchError];
if (fetchError != nil) {
NSLog(@"fetchError = %@, details = %@",fetchError,fetchError.userInfo);
}
noteTextView.text = [[fetchedObjs objectAtIndex:0] valueForKey:@"savedText"];
Et ceci pour enregistrer la note:
NSManagedObject *newDatedText;
newDatedText = [NSEntityDescription insertNewObjectForEntityForName:@"DatedText" inManagedObjectContext:self.managedObjectContext];
[newDatedText setValue:noteTextView.text forKey:@"savedText"];
[newDatedText setValue:datePicker.date forKey:@"dateSaved"];
NSError *saveError = nil;
[self.managedObjectContext save:&saveError];
if (saveError != nil) {
NSLog(@"[%@ saveContext] Error saving context: Error = %@, details = %@",[self class], saveError,saveError.userInfo);
}
Les dernières lignes de code affichées montrent que la méthode -save: renvoie une erreur si elle ne peut pas être sauvegardée. Voyez-vous une erreur? Si oui, * qu'est-ce que c'est? Si pas d'erreur, comment es-tu sûr que ça ne sauve rien? Comment * exactement * vérifiez-vous cela? En outre, votre premier bloc de code au démarrage de l'application semble divulguer une instance NSDate. Vous allou/init sans le libérer. Essayez [Date NSDate] pour renvoyer une instance autoreleased ou relâchez-la une fois que vous avez terminé (après l'avoir remis au sélecteur de date). –