【发布时间】:2023-03-12 14:03:01
【问题描述】:
我有一个JSON,其中包含这样的日期对象。
date: "22/02/2014"
现在我想将它映射到一个NSDate 对象。所以在我的映射中我添加了这个。
NSDateFormatter* dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"dd/MM/YYYY"];
kalenderMapping.dateFormatters = [NSArray arrayWithObject: dateFormatter];
当我记录我的 NSDate 对象时,我得到了这个。
date is 3112-12-31 23:00:00 +0000
有人知道问题出在哪里吗?
谢谢!
编辑
这就是我使用 kalenderMapping 的方式。
首先这里是我的全部功能。
-(RKObjectManager *)mapGetKalender{
RKEntityMapping* kalenderMapping = [RKEntityMapping mappingForEntityForName:@"Kalender" inManagedObjectStore:managedObjectStore];
kalenderMapping.identificationAttributes = @[@"kal_date"] ;
[kalenderMapping addAttributeMappingsFromDictionary:@{
@"date": @"kal_date",
@"hour": @"kal_hour",
@"type": @"kal_type",
@"home": @"kal_home",
@"away": @"kal_away",
@"homeScore": @"kal_homeScore",
@"awayScore": @"kal_awayScore",
@"homeIcon": @"kal_homeIcon",
@"awayIcon": @"kal_awayIcon",
@"date_text": @"kal_date_text",
}];
NSDateFormatter* dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"dd/M/yyyy"];
kalenderMapping.dateFormatters = [NSArray arrayWithObject: dateFormatter];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:kalenderMapping
pathPattern:nil
keyPath:@"sportief.calendar" statusCodes:[NSIndexSet indexSetWithIndex:200]];
NSArray *arrResponsDescriptor = [[NSArray alloc]initWithObjects:responseDescriptor, nil];
[objectManager addResponseDescriptorsFromArray:arrResponsDescriptor];
return objectManager;
}
这将返回一个对象管理器。我要这样使用的那个objectmanager。
-(void)fetchKalender{
API *api = [API new];
RKManagedObjectStore *store = [[YellowstarsDataModel sharedDataModel] objectStore];
NSManagedObjectContext *context = store.mainQueueManagedObjectContext;
RKObjectManager *objectManager = [api mapGetKalender];
NSString *request = @"/mobile/json/request/calendar/type/ipad";
[objectManager getObjectsAtPath:request parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSError *error = nil;
BOOL success = [store.mainQueueManagedObjectContext save:&error];
if (!success) RKLogWarning(@"Failed saving managed object context: %@", error);
NSLog(@"DONE FETCHING");
}
failure:^(RKObjectRequestOperation *operation, NSError *error) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
NSLog(@"Hit error: %@", error);
}];
NSError *error = nil;
[context save:&error];
}
执行此函数后,我想我所有的日期都作为 NSDates 存储在我的核心数据库中吗?
【问题讨论】:
-
您需要解释如何使用 kalendarMapping 值来映射日期。您还需要使用“yyyy”而不是“YYYY”。
-
我已经编辑了我的问题。如果您需要更多信息,请询问!
-
您实际使用的是什么日期格式,因为问题现在显示了 2 个不同的版本...
标签: iphone objective-c nsdate restkit nsdateformatter