2014-12-29 3 views
0

저는 iOS를 처음 사용하고 조금 도움이되었습니다. 소켓 서버에 연결하고 있지만 문제가 있습니다.JSON 개체 보내기 ios

if (self.socketIsConnected) 
{ 
    NSDictionary *deviceDic = @{@"username": @"drew", @"chatHash":@"FJHE8"}; 
    [self.socket emit:@"adduser" args:@[[NSString stringWithFormat: @"%@", deviceDic]]]; 
} 

은 "인수는"PARAM은 NSArray를 요청하지만이처럼 보이는 JSON 객체를 보낼 필요가 : 나는 노력을 Heres 무엇

if (self.socketIsConnected) 
{ 
    [self.socket emit:(NSString HERE) args:@[(NSArray HERE)]]; 
} 

을 :

을 Heres 방출하는 방법 :

{"username": "drew", "chatHash":"FJHE8"} 

어떻게 만들 수 있습니까? 그리고 NSArray에이 객체를 어떻게 두어야합니까?

업데이트 :

나는이 지금

NSArray *keys = [NSArray arrayWithObjects:@"username", @"chatHash", nil]; 
    NSArray *objects = [NSArray arrayWithObjects:@"drew", @"value2", nil]; 
    NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects 
                  forKeys:keys]; 
    [self.socket emit:@"adduser" args:dictionary]; 

을 시도하고 나는 서버에서 보았다. 던져 예외와 함께 내 서버가 충돌합니다. 그리고 수신하는 데이터 만입니다

이름

+0

어떤 라이브러리 클래스를 사용하고 있습니까? – Sandeep

+0

라이브러리는 SIOSocket입니다. json 객체를 올바른 방법으로 만드는 데 도움이 필요합니다. –

+0

NSArray의 모습을 조금 더 살피면 좋을 것 같습니다. JSON 객체는 더 많은 NSDictionary와 비슷합니다. –

답변

0

당신이 SIOSocket을 사용하고있는 것으로 보인다. 설명서가 명확하지는 않지만 emit 함수의 소스 (https://github.com/MegaBits/SIOSocket/blob/master/SocketIO/Source/SIOSocket.m)를 살펴보면 첫 번째 매개 변수가 NSDictionary 인 NSArray를 전달하면됩니다. 사전은 프레임 워크에 의해 JSON 객체로 직렬화됩니다.

emit 호출에 여러 인수를 사용할 수 있습니다. 인수의 각 매개 변수 유형은 전달하는 배열의 오브젝트 유형에 따라 다릅니다. 사전을 전달하면이를 JSON 객체, 배열의 배열, 숫자의 숫자, 문자열의 문자열로 변환합니다.

+0

나는 내 질문에 대한 귀하의 의견을 매우 소중히 생각합니다. –

+0

대체 할 수 있습니까? [self.socket emit : @ "adduser"args : dictionary]; with : [self.socket emit : @ "adduser"args : @ [dictionary]]; – NRaf

+0

글쎄, k6sandeep이 나에게 "args"가 NSDictionary에있을 것으로 예상되는 타입을 바꾸라고 말했다. –

0

당신은

 NSDictionary *subArgs = @{@"state" : @true}; 
    [self.socket emit:@"adduser" args:@[subArgs]]; 

이 문제를 해결할 수 있습니다.