2014-04-21 41 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序列化方法可能不知道如何序列化該對象,因爲它可能不實現可序列化的協議。我想要做的是遍歷你試圖插入到字典中的每個對象/值,看看它是什麼。然後或者讓它們可序列化或者將它們插入一個字符串形式。