Поскольку plist - это xml, то есть текст, когда объект NSDate записывается в plist, результат выглядит примерно так:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<date>2011-04-01T02:09:15Z</date>
</plist>
Я хотел бы получить эту строку (011-04-01T02:09:15Z
)напрямую, без всего окружения.Должен быть более разумный способ сделать это, чем:
NSString *xmlRepresentationOfCurrentDate = [[[[[[[NSString alloc] initWithData:[NSPropertyListSerialization dataFromPropertyList:self format:kCFPropertyListXMLFormat_v1_0 options:0 error:NULL] encoding:NSUTF8StringEncoding] autorelease] componentsSeparatedByString:@"<date>"] objectAtIndex:1] componentsSeparatedByString:@"</date>"] objectAtIndex:0];
Что усложняет тот факт, что представленное выше представление является GMT, и, очевидно, часовой пояс устанавливается во время создания объекта NSDate.Я вижу альтернативу приведенному выше коду: получить смещение по Гринвичу, использовать его в методе dateWithTimeInterval:sinceDate:
для получения даты по Гринвичу, а затем с помощью NSDateFormatter
выписать приведенную выше строку.Тем не менее, поскольку это приводит к еще большим накладным расходам.
Есть ли способ получить только эту строку XML?