【问题标题】:Save NSDate to CoreData将 NSDate 保存到 CoreData
【发布时间】:2011-09-07 10:20:21
【问题描述】:

我想将 NSDate 从 XML 保存到 coreData。 我不知道如何设置 NSDate 的值。有人可以给我一点帮助吗? 我的实体属性是 NSDate。还是应该是字符串并将日期另存为字符串??

[Sets setValue:[TBXML textForElement:xmlDate] forKey:@"beginDate"];

感谢您的任何回复和帮助,
刷子51

【问题讨论】:

  • 将日期保存为字符串会让您陷入痛苦的世界。将日期保留为 NSDates 并将它们转换为可读的格式,无论是 NSStrings、NSCalendar 日期、日期组件。只需将日期作为日期,您就可以免费获得这么多。
  • 非常感谢您的帮助。我已经合并了代码,将其放在一行中(仅用于 setValue): [Sets setValue:[myXMLdateReader dateFromString:[TBXML textForElement:xmlDate]] forKey:@"beginDate"];跨度>

标签: objective-c core-data nsdate setvalue


【解决方案1】:

不管你是不是有意混淆,你都没有说出来,所以我猜测一下:

  • [TBXML textForElement:xmlDate] 返回一个 NSString
  • beginDate 是实体 Sets 的日期属性

在这种情况下,您的代码显然不正确:您必须将NSDate 的实例传递给setValue:forKey:。您的代码如下所示:

NSDateFormatter *myXMLdateReader = [[NSDateFormatter alloc] init];
[myXMLdateReader setDateFormat:@"yyyy-MM-dd"]; // for example
NSDate *itsDate = [myXMLdateReader dateFromString:[TBXML textForElement:xmlDate]];
[myXMLdateReader release];
[Sets setValue:itsDate forKey:@"beginDate"];

【讨论】:

    【解决方案2】:

    NSDate添加到CoreData是没有问题的。您需要做的就是将 NSString 从 XML 文件转换为 NSDate 对象。要转换 NSString NSDate,您可以使用 NSDateFormatter 类。在下面的示例中,您可以看到我是如何做到的:

    NSDateFormatter *parseFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [parseFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"US"] autorelease]];
    [parseFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
    NSString *dateString = @"Mon, 02 May 2011 21:12:56 +0000";
    NSDate *dateToAdd = [parser.parseFormatter dateFromString:dateString];
    

    您可以设置需要的日期格式并在您的项目中使用此代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多