2013-03-05 148 views
0

好吧,所以我使用了这个代码来映射来自JSON API的数据。一切都正常运行,但后来我得到这个错误:RestKit映射错误“无法将对象集合映射到不可变集合。”

restkit.object_mapping:RKMapperOperation.m:76 Adding mapping error: Cannot map a collection of objects onto a non-mutable collection. Unexpected destination object type '__NSDictionaryI' 

这里是我使用的映射

RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client]; 

RKObjectMapping *classMapping = [RKObjectMapping mappingForClass:[GradePeriod class]]; 
[classMapping addAttributeMappingsFromDictionary: @{ 
@"period" : @"period", 
@"class" : @"name", 
@"term" : @"term", 
@"teacher" : @"teacher", 
@"percent" : @"percent", 
@"grade" : @"grade", 
@"missing" : @"missing", 
@"update" : @"update", 
@"detail" : @"url" 
}]; 

// Create a Response Descriptor 
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:classMapping 
                        pathPattern: nil 
                         keyPath: @"grades" 
                        statusCodes:[NSIndexSet indexSetWithIndex:200]]; 
[objectManager addResponseDescriptor:responseDescriptor]; 
objectManager.requestSerializationMIMEType = RKMIMETypeJSON; 

NSDictionary *queryParams; 
queryParams = [NSDictionary dictionaryWithObjectsAndKeys:username, @"username", password, @"password", nil]; 

// Retrieve the Data 
[objectManager postObject:queryParams 
        path:@"" 
       parameters:queryParams 
        success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
         grades = [NSMutableArray arrayWithArray: [mappingResult array]]; 
         NSLog(@"Loaded Grades: %@", grades); 
         [self.tableView reloadData]; 
        } 
        failure:^(RKObjectRequestOperation *operation, NSError *error) { 
         // Stuff removed for easier reading 
        }]; 

等级的代码是一个NSMutableArray

@property (nonatomic, retain) NSMutableArray *grades; 

GradePeriod定义像这样

@property (strong, nonatomic) NSString *period; 
@property (strong, nonatomic) NSString *name; 
@property (strong, nonatomic) NSString *term; 
@property (strong, nonatomic) NSString *teacher; 
@property (strong, nonatomic) NSString *percent; 
@property (strong, nonatomic) NSString *grade; 
@property (strong, nonatomic) NSString *missing; 
@property (strong, nonatomic) NSString *update; 
@property (strong, nonatomic) NSString *url; 

我不确定我做错了什么。 非常感谢!

回答

0

我升级到RestKit的最新版本,它自己修复。