2011-09-07 97 views
1

我想將NSDate從XML保存到coreData。 我不知道如何爲NSDate設置值。有人能幫我一點嗎? 我的實體屬性是NSDate。或者它應該是一個字符串並將日期保存爲字符串?保存NSDate到CoreData

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

感謝任何迴應和幫助,
brush51

+0

將日期保存爲字符串會讓您處於受傷的世界。將日期保留爲NSDates並將它們轉換爲可讀格式,無論是NSStrings,NSCalendar日期還是日期組件。只要把日期作爲約會,你就可以免費得到這麼多。 – Abizern

+0

非常感謝您的幫助。我已經將代碼組合起來,將它放在一行中(只是爲了setValue):** [Sets setValue:[myXMLdateReader dateFromString:[TBXML textForElement:xmlDate]] forKey:@「beginDate」]; ** – brush51

回答

6

無論你是故意混淆或沒有,你不說出來,所以我要去猜測:

  • [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"]; 
3

這是沒有問題的補充NSDateCoreData。您所需要做的就是將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]; 

您可以設置要緊的日期格式,並在項目中使用此代碼。