2012-06-20 2 views
2

MKNetworkOperation * OP = 자기 operationWithPath @ "thestore/서비스/storeservice.svc/getfavorites" PARAMS : fetchedObjects httpMethod "POST"@];사용 POST에 NSArray를 전달하는 방법 MKNetworkKit

fetechedObjects는 배열입니다. 나는 내가 POST 요청 본문에 투입하는 데 필요한 값을 얻을 수있는 배열을 루프

[ 
{ 
    "id": 9222, 
    "latitude": 19.7897, 
    "longitude": -64.0208 
}, 
{ 
    "id": 7832, 
    "latitude": 79.7713, 
    "longitude": -44.1084 
} 
] 

그러나 나는 시도하는 MKNetworkOperation

답변

4

우선을 사용하는 방법을 설정하는 것입니다 알아낼 수는 없습니다 조작의 postDataEncoding 속성은 MKNKPostDataEncodingTypeJSON입니다. 이 이어야 어레이가 일련 화되고 요청 본문으로 설정됩니다.

그러나 MKNetworkKit은 실제로 params 매개 변수의 배열 값을 지원하지 않습니다. 그것은 사전을 기대합니다. 잘못된 코드 경로에 충돌 한 경우 배열을 제공 한 사전을 기대하기 때문에 충돌이 발생할 수 있습니다.

+0

는 예 그것은 MKNKPostDataEncodingType JSON으로 설정됩니다. OK 그래서 NSArray를 갖도록 네트워크 키트를 확장해야한다고 생각합니다 * fetchedObjects = [managedObjectContext executeFetchRequest : fetchRequest error : & error]; MKNetworkOperation * op = [self operationWithPath : @ "thestore/services/storeservice.svc/getfavorites" params : fetchedObjects httpMethod : @ "POST"]; –

2

아마도 도움이됩니다.

[op setCustomPostDataEncodingHandler:^NSString *(NSArray *listOfItems) { 

    return [listOfItems description]; 

    } forType:@"text/json"]; 
1

나는 목록으로 배열 (제품)를 전송하여 그것을 해결 :

NSData *data = [NSJSONSerialization dataWithJSONObject:products options:0 // non-pretty printing error:nil]; ; [params setObject:[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] forKey:@"list"];