Esiste una libreria Objective-C (o C) (compatibile con la posizione principale) che può dirmi l'ora dell'alba e del tramonto per un dato giorno di calendario?Libreria Objective-C per alba e tramonto?
risposta
EDSunriseSet è un wrapper Objective-C open source e gratuito per le routine in linguaggio C create da Paul Schlyter.
Il calcolo viene eseguito interamente tramite le routine del codice C. EDSunrisetSet colma quei calcoli per classi comuni di cacao (NSDate, NSTimeZone, ...)
Ho utilizzato una libreria denominata SUNWAIT. Molto semplice, efficace - facile da usare!
Lo hai usato con Objective-C/per iOS? Inoltre, ci sono tutorial introduttivi? – Moshe
No - solo dritto C. Puoi compilarlo come un file "C" standard e chiamarlo semplicemente. (Questo è quello che ho fatto nella mia app, ma non era un'app per iPhone). – Brad
Brad - Devo compilarlo separatamente o includerlo nel mio progetto e utilizzare le chiamate API? – Moshe
Ho effettivamente portato il KosherJava Library e ho pianificato di renderlo disponibile presto su GitHub!
Edit:
KosherCocoa è ora vivono su GitHub! Se non hai bisogno del codice relativo al calendario ebraico, puoi eliminare il file "calendario". I file di classe sono separati piacevolmente in cartelle in base ai tipi di calcoli che fanno.
Modifica: KosherCocoa ci dovrebbe essere sostituito con un aggiornamento moderno e più completo non appena possibile. Il link sopra ora punta a un repository legacy.
provare questo: https://github.com/berkley/ObjectiveCUtil
Solo una nota .. se si utilizza il Berkley uno ... beh non funziona (in Australia almeno). Tuttavia include il codice di Paul Schlyter C, che è fantastico.
Se si desidera che funzioni ovunque, è meglio calcolare solo le date in UTC.
In SunriseAndSunset.m, sostituire il codice da doppia salita; doppio set; come segue:
sun_rise_set(theYear, theMonth, theDay, lon, lat, &rise, &set);
int hours = HOURS(rise);
int mins = MINUTES(rise);
int sethrs = HOURS(set);
int setmins = MINUTES(set);
NSTimeInterval riseOffset = ((hours * 60) + mins) * 60;
NSTimeInterval setOffset = ((sethrs * 60) + setmins) * 60;
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSString *dateStr = [NSString stringWithFormat:@"%i-%02d-%02dT00:00:00+0000", theYear, theMonth, theDay];
NSDate *utcMidnight = [formatter dateFromString:dateStr];
NSDate *utcSunrise = [utcMidnight dateByAddingTimeInterval:riseOffset];
NSDate *utcSunset = [utcMidnight dateByAddingTimeInterval:setOffset];
[formatter release];
[gregorian release];
return [NSDictionary dictionaryWithObjectsAndKeys:utcSunrise, @"sunrise", utcSunset, @"sunset", nil];
Probabilmente non sembra funzionare in Australia perché ti è stata data una data nel fuso orario GMT. Scommetto che aveva '+ 0000' invece di' + 1000' nel NSDate quando stavate eseguendo il debug. La prossima volta utilizzare '[date descriptionInLocale: [NSLocale currentLocale]]' per eseguire il debug delle date. :-) –
Difficile ricordarlo fino a questo punto, ma sono abbastanza sicuro che non sia stato il caso, si trattava più di presupposti nel codice e non di test su valori anomali. Ma comunque, quanto sopra funziona bene e il loro esempio mi ha salvato un po 'di tempo. Quindi va bene! :) – DavidAWalsh
Ah nessuna preoccupazione :-) Lo sto usando in Australia, quindi spero che abbiano risolto i bug. Sembra funzionare dopo quasi una settimana di test. –
Prova questa: https://github.com/mourner/suncalc/
molto chiaro e facile da implementare, anche se Scritto da JavaScript ma è facile per convertirlo
obiettivo-C
Inoltre supporto per calcolare sole, posizione lunare e coordinate.
Dopo aver trovato un'alternativa Swift, ho creato Solar: una micro-libreria Swift per Sunrise/Sunset.
Questo funziona per me. È stato recentemente aggiornato (gennaio 2013) per alcuni bug di memoria, quindi se lo stai utilizzando, assicurati di ottenere l'ultimo codice. – mpemburn