Je travaille avec Realm et j'ai un tableau trié par date pour toutes les entrées d'une carte spécifique. Je dois créer un NSPredicate (ou un autre moyen) qui me donnera toutes les dates pour cette carte pour un mois spécifique. Mon problème est que certains mois ont des quantités différentes de jours en eux.Requête de plage de dates de domaine dans Objective-C
Voici ce que j'ai jusqu'à présent.
// Filter specific card, create date and string for x axis
NSString *filteredName = [NSString stringWithFormat:@"%@", self.cardType];
NSDate *dateElement = [[NSDate alloc]init];
NSString *datedString = [[NSString alloc]initWithFormat:@""];
//Formatting datedString
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateFormat = @"MM/dd/YYYY";
NSSortDescriptor *dateSort = [[NSSortDescriptor alloc]initWithKey:@"date" ascending:YES];
NSArray *sortedArray = @[dateSort];
//self.orderHistory is all of the cards from the Realm database filtered down to a specific type of card.
for (Order *uniqueOrder in [self.orderHistory objectsWhere:@"name = [c] %@", filteredName]) {
// [self.uniqueCardArray addObject:uniqueOrder];
dateElement = uniqueOrder.date;
datedString = [df stringFromDate:dateElement];
[self.uniqueDatesForCardArray addObject:datedString];
}
[self.uniqueCardArray sortUsingDescriptor:sortedArray];
code me donne toutes les dates ci-dessus pour une carte spécifique j'ai besoin des dates pour un mois donné, donc je l'ai essayé cette solution collante mais je pense qu'il ya quelque chose de plus élégant pour dire le moins.
NSDate *todaysDate = [NSDate date];
NSTimeInterval secondsInMonth =- (60 * 60 * 24 * 365)/12;
NSDate *dateOneMonthBack = [todaysDate dateByAddingTimeInterval:secondsInMonth];
NSPredicate *backDatesPred = [NSPredicate predicateWithFormat: @"date BETWEEN {%@, %@}", dateOneMonthBack, todaysDate];
plus étant le code méchant, il va aussi me ramener un mois de la date actuelle et non seulement revenir au début du mois. J'ai regardé la documentation du Realm, NSCalendar, et le guide NSPredicate et maintenant ma tête nage en essayant de compter tous les problèmes possibles qui peuvent mal se passer avec ça. Tout conseil ou extrait de code serait d'une grande aide.
C'est proche de ce que je cherche, mais ce code va saigner plus dans le mois précédent comme le code exemple (bien qu'évidemment laid) je fournis. Ce que je cherche, c'est un moyen de revenir au début du mois en cours d'où la date est aujourd'hui. Il pourrait donc y avoir un jour, trois jours en arrière, 24 jours en arrière, etc. pour arriver au début du mois. Désolé de ne pas avoir clarifié cela plus clairement. Cela aide cependant. – Robert
Donc, votre question est de savoir comment utiliser NSDateComponents, non? Si vous souhaitez obtenir hier: changez simplement comps.month = -1' en comps.day = -1'. trois jours en arrière: 'comps.day = -3', 24 jours en arrière:' comps.day = -24' etc. –