Ios 将JSON日期转换为日期以存储在核心数据中
我从JSON格式的web服务接收日期 我想将其存储在核心数据中,在尝试这样做时出现错误后,读取JSON显示为纯文本 因此,我实现了一些代码来将其转换为日期。但是,日期仍然没有保存。不会引发任何错误,但它会发出黄色警告:Ios 将JSON日期转换为日期以存储在核心数据中,ios,date,core-data,Ios,Date,Core Data,我从JSON格式的web服务接收日期 我想将其存储在核心数据中,在尝试这样做时出现错误后,读取JSON显示为纯文本 因此,我实现了一些代码来将其转换为日期。但是,日期仍然没有保存。不会引发任何错误,但它会发出黄色警告:使用类型为NSDate的表达式初始化NSString NSDate *creationdate = [dateFormatter dateFromString:creationdatestr]; 以下是代码: NSDateFormatter *dateFormatter = [
使用类型为NSDate的表达式初始化NSString
NSDate *creationdate = [dateFormatter dateFromString:creationdatestr];
以下是代码:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];
//Following line shows yellow warning:Incompatible pointer types initializing NSString with an expression of type NSDate.
NSString *creationdatestr = importItem.creationDate;
NSDate *creationdate = [dateFormatter dateFromString:creationdatestr];
值得注意的是,当我将creationdate和creationdatestr都记录到控制台时,它们看起来都是相同的,如下所示,所以dateFormatter可能没有发生任何事情。在任何情况下,两个版本都不能正确保存到日期字段中:
creation date:2015-10-16 11:05:57
creation date as date:2015-10-16 11:05:57
如有任何建议,我们将不胜感激
编辑:
此方法捕获JSON提要并将其分配给对象。它似乎很好地捕获了JSON,但是,我无法说出传入JSON的数据类型。毕竟,它只是以文本的形式出现,我不知道IOS如何计算出生成传入文本的数据类型
在IDItemFromServer对象中,日期定义为NSDate类型的属性
- (NSArray *) convertFeedtoObject:(NSArray*)feed {
// Create an array to store the locations
NSMutableArray *_items = [[NSMutableArray alloc] init];
for (int i = 0; i < feed.count; i++) {
NSDictionary *feedElement = feed[i];
IDItemFromServer *newItem = [[IDItemFromServer alloc] init];
newItem.name = feedElement[@"name"];
newItem.date = feedElement(@"date");
NSLog(@"newItem.date");//this logs what looks like a date.
-(NSArray*)convertFeedtoObject:(NSArray*)提要{
//创建一个数组来存储位置
NSMutableArray*_items=[[NSMutableArray alloc]init];
for(int i=0;i
从您的警告/错误来看,它不是一个NSString
,而是一个NSDate
NSDate *creationdate = [dateFormatter dateFromString:creationdatestr];
因此,这行代码是错误的
什么是
importItem
?它是您的NSManagedObject
子类吗?如果是,您正试图将现有的NSDate
对象转换为NSString
,但这不起作用,因为它已经是NSDate,我不明白。NSLog(@“%@”,object)将调用[对象描述]
。这不是因为[object1描述]和[object2描述]显示来自同一类的相同值…我取出了NSLog,它会显示importItem.creationDate
是一个NSDate*
,对吗?我想是的。但是,出于某种原因,它不会保存到核心数据的日期字段中。错误消息是:属性的值类型不可接受:property=“creationDate”;所需类型=NSDate;给定类型=u NSCFString;值=2015-10-13 11:08:21这很有意义,我刚刚尝试将其声明为NSDate并保存,但它似乎是NSCF字符串,我读取的是NSString的一种风格。保存返回此错误:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“不可接受类型”属性的值:property=“creationdate”;所需类型=NSDate;给定类型=u NSCFString;值=2015-10-13 11:08:21。'importItem是用于导入的NSManagedObject子类。它有一个NSDate*creation date属性,因此它需要一个NSDate。我使用isKindOfClass测试了if,并以字符串的方式进行了测试,与黄色警告消息相反。然后importItem.creationDate
将始终返回nil
或NSDate
。它永远不会返回NSString
。此外,如何使用NSManagedObject
之类的数据对象进行导入?从JSON设置creationDate
值的代码在哪里?
NSDate *creationdate = [dateFormatter dateFromString:creationdatestr];