代码之家  ›  专栏  ›  技术社区  ›  Pedro

这是plist还是xcode中的bug?

  •  1
  • Pedro  · 技术社区  · 15 年前

    G'Day-ALL

    如果您在Xcode的plist编辑器或苹果的独立plist编辑器中创建日期项,您会得到某种形式的表单。 <date>2010-05-29T10:30:00Z</date> 这是一个很好的格式在UTC的ISO日期(由“Z”表示)。因为我在时区UTC+10,当它被读取到我的应用程序中,然后显示出来时,我得到了晚上8:30,仍然很好。不过,如果这是我的时区,应该是 <date>2010-05-29T10:30:00+10</date> (将“Z”替换为我的时区偏移)。我在iPhone应用程序中读取这些日期的所有尝试都被拒绝了,就好像它是畸形的一样&

    其他人认为我认为这是plist或xcode中的bug是正确的吗?我的感觉是在plist中实现ISO日期和时间是不完整的。

    干杯,佩德罗:)

    1 回复  |  直到 15 年前
        1
  •  1
  •   Jason Coco superfell    15 年前

    它也不是一个缺陷。在Copeoundation(和Foundation)中,所有的日期都用Zulu时间表示,这就是为什么它们被序列化的原因。然后根据希望显示日期的设备的时区对日期进行格式化以进行显示。虽然这是一个ISO日期字符串,但唯一有效的时基区域是Zulu时间。

    如果出于某种原因,需要跟踪在其中生成任何给定日期的时区,则应将其作为单独的属性进行跟踪。如果需要从其他地方编写XML属性列表,必须首先将日期转换为zulu,然后将其写出(尽管文档明确指定这些键仅用于调试辅助/可读性,将来可能会更改)。这使得plist成为在两个Cocoa/CoreFoundation应用程序之间序列化数据的一种不错的方法,但在Cocoa/CoreFoundation应用程序和其他一些应用程序之间序列化数据的方法不太合适。