2012-12-24 11 views
12

Próbuję uzyskać dane o urodzeniu dla kontaktów, ale jeśli użytkownik nie wybierze roku lub kontakt pochodzi z Facebooka i roku lub danych, które on sam jest ukryty, to daje mi wartość "1604" dla roku, który widzisz co mam na myśli.NSDate zwraca "1604" za wartość roku?

enter image description here

enter image description here

Odpowiedz

20

Gratulacje, odkryłeś szczegóły wdrożenia!

Po pierwsze, kontakty przechowuje daty jako punkty w czasie i nie można zapisać punktu w czasie bez roku, ponieważ każdy punkt w czasie ma rok. Dlatego też należało podjąć decyzję, w jaki sposób książka adresowa będzie przechowywać "nieznany" rok w dacie. Zdecydowano, że „1604” będzie w porządku lat, z kilku powodów:

  1. Kiedy mówisz książce adresowej, jest mało prawdopodobne, że będziesz mieć nikogo w swojej książce adresowej, która urodziła się w 1604 roku
  2. 1604 był rokiem przestępnym (według zasad liczenia lat przestępnych), co oznacza, że ​​jeśli osoba, której rok urodzenia nie znasz, urodziła się 29 lutego, to 1604 może sobie z tym poradzić.
  3. 1604 był przed przełącznikiem kalendarza juliańsko-gregoriańskiego.

Tak więc, jeśli wyciągasz datki urodzin z książki adresowej, będziesz potrzebował specjalnego przypadku 1604 jako "daty urodzenia, w której rok jest nieznany".

Uwaga: Według mojej wiedzy jest to obsługiwane tylko w przypadku kalendarza gregoriańskiego. W przypadku wszystkich innych kalendarzy to zachowanie jest niezdefiniowane.

+1

, więc mogę sprawdzić, czy jest równy "1604" format będzie po prostu setDateFormat: @ "MM- dd " – Omarj

+2

@Omarj tak. Możesz wyodrębnić rok za pomocą 'NSCalendar 'w języku gregoriańskim, aby uzyskać odpowiednie' NSDateComponents'. –

2

Można init roku w viewDidLoad.

Lub sprawdź, czy rok nie został wybrany przez użytkownika, obecny komunikat o błędzie.

+1

ok, ale ten selektor dla rodzimych dodać nowy kontakt ??? a co z kontaktem pochodzącym z Facebooka? – Omarj

+2

Musisz sprawdzić, czy masz rok inny niż 1604, a jeśli tak, poproś użytkownika o wypełnienie tego szczegółu – Luda

Powiązane problemy