2012-12-24 29 views
12

Tôi cố gắng lấy dữ liệu sinh cho người liên hệ nhưng nếu người dùng không chọn năm hoặc người liên hệ đến từ Facebook và năm hoặc dữ liệu được tự ẩn để nó cho tôi giá trị "1604" cho năm u có thể xem ý tôi là gì trong hình ảnh.Trả lại NSDate "1604" cho giá trị năm?

enter image description here

enter image description here

Trả lời

20

Xin chúc mừng, bạn đã khám phá chi tiết triển khai!

Tắt đầu tiên, Danh bạ lưu trữ ngày theo thời gian và không thể lưu trữ một điểm đúng hạn mà không cần một năm, bởi vì mọi thời điểm đều có một năm. Do đó, một quyết định phải được đưa ra về cách sổ địa chỉ sẽ lưu trữ một năm "không rõ" trong một ngày. Nó đã được quyết định rằng "1604" sẽ là một năm tốt đẹp, vì nhiều lý do:

  1. Khi bạn đang nói về sổ địa chỉ, rất có thể bạn sẽ có bất cứ ai trong sổ địa chỉ của bạn sinh năm 1604
  2. 1604 là năm nhuận (theo các quy tắc về cách tính năm nhuận), có nghĩa là nếu người có năm sinh bạn không biết được sinh ra vào ngày 29 tháng 2, thì 1604 cũng có thể xử lý điều đó.
  3. 1604 trước công tắc lịch Julian-Gregorian.

Vì vậy, nếu bạn đang kéo ngày sinh ra khỏi Sổ địa chỉ, bạn sẽ cần đến trường hợp đặc biệt 1604 làm "ngày sinh không rõ năm".

Lưu ý: Theo hiểu biết của tôi, điều này chỉ được hỗ trợ khi xử lý lịch Gregorian. Đối với tất cả các lịch khác, hành vi này không xác định.

+1

để tôi có thể kiểm tra xem nó có bằng "1604" định dạng sẽ chỉ là setDateFormat: @ "MM- đ " – Omarj

+2

@Omarj có. Bạn có thể trích xuất năm bằng cách sử dụng một 'NSCalendar' của Gregorian để có được' NSDateComponents' thích hợp. –

2

Bạn có thể init năm trong viewDidLoad.

Hoặc kiểm tra xem năm không được người dùng chọn, hiển thị thông báo lỗi.

+1

ok nhưng bộ chọn này cho địa chỉ liên hệ mới thêm ??? và những gì liên lạc đến từ Facebook ?? – Omarj

+2

Bạn phải kiểm tra xem bạn có năm khác với năm 1604 không và nếu có, hãy yêu cầu người dùng điền chi tiết này vào – Luda