2014-04-21 40 views
0

请帮忙将下面的代码引发了异常,我无法弄清楚什么是错的的Objective-C创建嵌套字典AFNetworking参数

-(NSDictionary*)prepareParameters:(NSArray*) p_currentParameters 
{ 
    NSMutableDictionary *parameters = nil; 
    if(self.p_currentParameters.count > 0) 
    { 
     parameters = [[NSMutableDictionary alloc] init]; 
     for(int courseIdx = 0; courseIdx < p_currentParameters.count; courseIdx++) 
     { 
      CourseDetails* course = p_currentParameters[courseIdx]; 
      NSMutableDictionary *courseData = [[NSMutableDictionary alloc] init]; 
      courseData[@"courseIdx"] = [NSNumber numberWithInteger:course.id]; 
      courseData[@"isFavorite"] = @(course.isFavorite); 
      courseData[@"isDeleted"] = @(course.isDeleted); 
      [parameters setObject:courseData forKey:[NSNumber numberWithInt:courseIdx]]; 
     } 
    } 
    return parameters; 
} 

- (void)sendUserDataOnCourses:(NSArray*) p_currentCourses 
{ 
    @try 
    { 
     NSString *baseURLString = <API ADDRESS>; 
     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
     NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; 
     [parameters setObject:userUniqueId forKey:@"userID"]; 
     [parameters setObject:[self prepareParameters:p_currentCourses] forKey:@"courses"]; 
     NSError *error; 
     NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:&error]; 
     NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
     [manager POST:baseURLString 
      parameters:[[NSDictionary alloc] initWithObjectsAndKeys:jsonString, @"request",nil] 
       success:^(AFHTTPRequestOperation *operation, id responseObject){ 
        <DO SOME STUFF> 
       } 
       failure:^(AFHTTPRequestOperation *operation, NSError *error){ 
        NSLog(@"!!!!!!!!!!!!!! Error: %@ Error code: %d timeout counter:%d", error, error.code, timeoutfailure); 
       }]; 
    } 
    @catch (NSException *exception) 
    { 
     NSLog(@"sendUserDataOnCourses exception: %@",exception); 
    } 
} 

在这条线出现异常:NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:&error];和异常消息是:Invalid (non-string) key in JSON dictionary

回答

0

作为例外情况说,你试图插入一个非字符串键(基本上是一个对象)到字典中。 JSON序列化方法可能不知道如何序列化该对象,因为它可能不实现可序列化的协议。我想要做的是遍历你试图插入到字典中的每个对象/值,看看它是什么。然后或者让它们可序列化或者将它们插入一个字符串形式。