2014-09-30 14 views
6

NSDateComponentsweek obsoleto da iOS8. Apple suggerisce di utilizzare weekOfMonth o weekOfYear invece, a seconda del contesto, ma stanno lavorando in un modo diverso. Per esempio:La settimana NSDateComponents funziona in modo diverso su iOS8

components1 = [calendar components:NSMonthCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit 
          fromDate:[self date7DaysAgo] 
          toDate:[NSDate date] 
          options:0]; 

componenti1 ritorna mese = 0, = 1 settimana, giorno = 0, weekOfMonth e weekOfYear sono entrambi pari al 2147483647 (valore massimo intero).

components2 = [calendar components:NSMonthCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit 
          fromDate:[self date30DaysAgo] 
          toDate:[NSDate date] 
          options:0]; 

components2 ritorna mese = 1 (lo so che dipende, ma il suo solo un esempio), la settimana = 0, giorno = 0, weekOfMonth e weekOfYear sono entrambi pari al 2147483647 (valore massimo intero).

Week restituisce il numero di settimane durante un periodo (se era una settimana o multiplo) ed è completamente diverso dal numero di una settimana nel mese o anno. Perché Apple potrebbe suggerire di utilizzare questo invece?

+0

Cosa viene eseguito dal metodo date7DaysAgo e date30DaysAgo? – Apurv

+0

Data di ritorno 7 o 30 giorni fa. Può essere ad esempio: '[[Data NSData] dateByAddingTimeInterval: -60 * 60 * 24 * 7] (So che a causa dell'ora legale o qualcos'altro può differire, ma ancora una volta, è solo un esempio). – KlimczakM

+1

Se in effetti si sceglie di esaminare la documentazione, NSWeekCalendarUnit è "Deprecated in iOS 8.0". (Comunque, stranamente, così sono tutte le altre unità.) –

risposta

6

Utilizzare NSWeekOfMonthCalendarUnit o NSWeekOfYearCalendarUnit anziché NSWeekCalendarUnit.

+0

Il mio male. Ho pensato che funzionasse diversamente su iOS8 ma weekOfyear farà il lavoro qui. – KlimczakM

+0

Questi sono deprecati in 8. (E buona fortuna a trovare i rimpiazzi nella documentazione di Apple.) –

Problemi correlati