2014-03-30 4 views
22

In iOS 7.0 ist die NSWeekCalendarUnit veraltet. Die Dokumentation sagt, es ersetzt werden muss:Wie veraltete NSWeekCalendarUnit im Kontext von UILocalNotification ersetzen?

Verwenden NSCalendarUnitWeekOfMonth oder NSCalendarUnitWeekOfYear je , auf dem Sie bedeuten

I NSWeekCalendarUnit für wöchentliche Erinnerungen bin mit, die man erreiche ich wählen müssen die gleiche Bedeutung bekommen? Ich verstehe den Unterschied zwischen NSCalendarUnitWeekOfMonth und NSCalendarUnitWeekOfYear nicht.

Jemand hat die gleiche question hier auf SO gefragt, ohne eine überzeugende Antwort.

Es ist ziemlich verwirrend. Next week ist in meinem Verständnis atomar. Heute ist Sun 30 March 2014. Daher wird Next week immer Sun 6 March 2014 sein. Wie könnte sich das von einer Monats- oder Jahresperspektive ändern?

+0

Normalerweise wird NSCalendarUniwWeekOfMonth 1 für die erste Woche des Monats zurückgeben, was auch immer der Wert des Monats ist, während NSCalendarUnitWeekOfYear unterschiedliche Werte zurückgibt (es gibt ungefähr 52 Wochen in einem Jahr, gegen 4/5 in einem Monat). – Larme

+0

Danke und was bedeutet das im Zusammenhang mit UILocalNotification? :) – Houman

+1

Ich würde vorschlagen, NSCalendarUnitWeekOfYear zu verwenden, um eine Erinnerung jedes Jahr zu erhalten, weil ich denke, dass die Verwendung von NSCalendarUnitWeekOfMonth nur für den aktuellen Monat (Wert geht von 1 bis 4). Um zu debuggen, fügen Sie eine Woche zu einem Datum hinzu, iterieren Sie diese beiden Werte von NSDateComponents. – Larme

Antwort

20

Wenn Sie NSWeekCalendarUnit wurden mit einem wöchentlichen Erinnerung auszulösen, ersetzen Sie es durch NSCalendarUnitWeekOfYear:

if (days == 7) localNotif.repeatInterval = NSWeekCalendarUnit;  // deprecated 
if (days == 7) localNotif.repeatInterval = NSCalendarUnitWeekOfYear; 

Sie Ihre wöchentliche Benachrichtigung noch richtig funktioniert finden sollte.

Die Dokumentation von Apple sollte aktualisiert werden, um Hinweise zum richtigen Austausch zu geben.

Verwandte Themen