Świadczenie usług w zakresie montażu, kiepski dostęp, gdy nspredicate dom

ja compute, compute liczbę miesięcy pomiędzy datą urodzenia i dziś. Z tym numerem tworzę predykat do pobierania obiektów z najważniejszych danych. Choć liczba miesięcy jest obliczana poprawnie (jak pokazuje historia), dostaję EXC_BAD_ACCESS przy budowie predykatu.

oto mój kod:

    NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];

    NSUInteger unitFlags = NSMonthCalendarUnit;

    NSDateComponents *components = [gregorian components:unitFlags
                                            fromDate:birthdate
                                              toDate:today options:0];
    int months = [components month];
    NSLog(@"months: %ld", (long)months);
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"(alter_min_monat > %@)", months];

dlaczego tak się dzieje?


problem polega na kruszywach, a nie w NSPredicate a initWithFormat: To się nazywa wewnątrz.

%@ nie należy korzystać z tagiem int użyj .

oto ten wiersz:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(alter_min_monat > %@)", months];

powinno być:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(alter_min_monat > %d)", months];

inne powiązane informacje:Instrukcja Programowania Wierszy: Specyfikatory Formatu Wierszy