Это ошибка в plist или Xcode? - PullRequest
1 голос
/ 29 мая 2010

G'day All

Если вы создаете элемент даты в редакторе списков в Xcode или в автономном редакторе списков компонентов Apple, вы получаете что-то вроде <date>2010-05-29T10:30:00Z</date>, которое является хорошей правильно сформированной датой ISO в UTC (обозначено «Z»). Потому что я нахожусь в часовом поясе UTC +10, когда это читается в моем приложении и затем отображается, я получаю 8:30 вечера, все еще хорошо. Однако, если это время в моем часовом поясе, оно должно быть <date>2010-05-29T10:30:00+10</date> (заменив "Z" на мое смещение часового пояса). Во всех моих попытках считывания таких дат в моем приложении для iPhone был отклонен список, как будто он искажен, и редактирование списка с такой датой в редакторах Apple изменило «+10» на «Z» без настройки времени.

Другие считают, что я прав, считая, что это ошибка в plist или Xcode? Мне кажется, что внедрение даты и времени ISO в plist является неполным.

Ура, Педро:)

1 Ответ

1 голос
/ 29 мая 2010

Это тоже не ошибка.В CoreFoundation (и Foundation) все даты представлены во времени зулу, поэтому они сериализуются таким образом.Дата затем форматируется для отображения на основе часового пояса устройства, которое желает отображать ее.Хотя это строка даты ISO, единственным действительным часовым поясом для CoreFoundation / Foundation является время Зулу.

Если по какой-то причине вам необходимо отслеживать часовой пояс, в котором была сгенерирована любая заданная дата, вам следуетотслеживать это как отдельное свойство.Если вам нужно написать список свойств XML откуда-то еще, вы должны сначала преобразовать дату в zulu, а затем записать ее (хотя в документации четко указано, что эти ключи предназначены только для средств отладки / удобочитаемости и могут измениться в будущем).Это делает списки предпочтительным способом сериализации данных между двумя приложениями Cocoa / CoreFoundation, но менее подходящим способом сериализации данных между приложением Cocoa / CoreFoundation и некоторыми другими приложениями.

...