2014-04-21 5 views
0

다음 코드는 예외가 발생 도와주세요 매개 변수, 그리고 내가 잘못이 무엇인지 알아낼 수 없습니다오브젝티브 C는

를 제외하고는이 라인에서 발생
-(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 직렬화 메소드는 직렬화 가능 프로토콜을 구현하지 않을 수 있으므로 해당 객체를 직렬화하는 방법을 알지 못합니다. 내가하고 싶은 것은 당신이 사전에 삽입하려고하는 모든 객체/값을 검토하고 그것이 무엇인지를 보는 것입니다. 그런 다음 직렬화하거나 문자열 형식으로 삽입하십시오.

관련 문제