大佬教程收集整理的这篇文章主要介绍了iOS RestKit日期解析,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
// Set the Dateformatter for the Dates returned by KNowledge tt/mm/yyyy NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"dd/MM/yyyy"]; [[RKValueTransformer DefaultValueTransformer] insertValueTransformer:dateFormatter aTindex:0];
但是在实际项目中,我的日期格式略有不同dd.Mm.yyyy,所以我使用了相同的代码行,只是切换了Date格式,但是日期没有被解析.
对于这个日期“ExamDate”:“20.06.2014”我得到(NSDate *)_examDate = 0x08f7dcd0 2014-01-01 01:00:00 CET解析后我无法理解为什么.
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"dd.Mm.yyyy"]; NSDate *date = [dateFormatter dateFromString:@"20.06.2014"]; DLog(@"Date: %@",datE);
并记录在日志中:日期:2014-06-19 22:00:00 0000
dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
由于你的问题似乎是在RestKit的解析中,你需要使用自己的日期解析器.您可以通过安装RestKit调用Value Transformer来实现这一点,Value Transformer是映射数据时使用的.
这是你可以用来实现你想要的东西:
[RKObjectMapping alloc]; // This ensures you will actually insert at index 0! [RKValueTransformer.DefaultValueTransformer insertValueTransformer: [RKBlockValueTransformer valueTransformerWithValidationBlock:^BOOL(__unsafe_unretained Class inputValueClass,__unsafe_unretained Class outputValueClass) { return (([inputValueClass isSubclassOfClass:[NSDate class]] && [outputValueClass isSubclassOfClass:[NSString class]]) || ([inputValueClass isSubclassOfClass:[NSString class]] && [outputValueClass isSubclassOfClass:[NSDate class]])); } transformationBlock:^BOOL(id inputValue,__autoreleasing id *outputValue,__unsafe_unretained Class outputClass,NSError *__autoreleasing *error) { RKValueTransformerTesTinputValueIsKindOfClass(inputValue,(@[ [NSString class],[NSDate class] ]),error); RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputClass,error); if ([inputValue isKindOfClass:[NSString class]]) { // We're mapping from a String to a date. // You can add your formatter here. // Below is mine for mapping from Unix Time to an NSDate. NSString* input = inputValue; *outputValue = [NSDate dateWithTimeIntervalSince1970:input.IntegerValue]; } else if ([inputValue isKindOfClass:[NSDate class]]) { // We're mapping from a date to a String. // You can add your formatter here (if needed). // Below is mine for mapping from an NSDate to Unix Time. NSDate* input = inputValue; *outputValue = @([input timeIntervalSince1970]); } return YES; }] aTindex:0]; // Insert at index 0 so your formatter is always used over the default one.
或者,看起来RestKit拥有自己的NSDateFormatter类别,它增加了对将其添加为RKValueTransformer的支持.你应该可以尝试这样的事情:
[RKObjectMapping alloc]; // This ensures you will actually insert at index 0! NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"dd.Mm.yyyy"]; dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; [RKDefaultValueTransformer insertValueTransformer:dateFormatter aTindex:0];
以上是大佬教程为你收集整理的iOS RestKit日期解析全部内容,希望文章能够帮你解决iOS RestKit日期解析所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。