Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用RestKit将JSON字符串映射到NSDate对象_Iphone_Objective C_Nsdate_Restkit_Nsdateformatter - Fatal编程技术网

Iphone 使用RestKit将JSON字符串映射到NSDate对象

Iphone 使用RestKit将JSON字符串映射到NSDate对象,iphone,objective-c,nsdate,restkit,nsdateformatter,Iphone,Objective C,Nsdate,Restkit,Nsdateformatter,我有一个JSON,它包含这样一个日期对象 date: "22/02/2014" -(void)fetchKalender{ API *api = [API new]; RKManagedObjectStore *store = [[YellowstarsDataModel sharedDataModel] objectStore]; NSManagedObjectContext *context = store.mainQueueManagedObjectContext

我有一个JSON,它包含这样一个日期对象

date: "22/02/2014"
-(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];
}
现在我想把它映射到一个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。我将像这样使用objectmanager

date: "22/02/2014"
-(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];
}
执行此函数后,我假设我的所有日期都作为NSDATE存储在我的核心数据库中。否?

请尝试以下操作:

[dateFormatter  setDateFormat:@"dd/M/yyyy"];
并将代码放在使用格式化程序创建日期的位置

NSString *date = @"22/02/2014";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];

NSDate *date = [dateFormatter dateFromString:date];

我认为上面的代码对您很有用…

您的意思是什么?请将代码放在使用格式化程序创建日期的位置?我应该将代码放在哪里?我想不是在哪里映射的?你需要解释如何使用kalendarMapping值映射日期。您还需要使用yyyy而不是yyyy。我已经编辑了我的问题。如果您需要更多信息,请咨询!您实际使用的日期格式是什么?现在的问题显示了两个不同的版本。。。