我是iOS新手并寻求一些帮助。我正在连接到我的套接字服务器,但发送时遇到问题。
下面是如何发射:
if (self.socketIsConnected)
{
[self.socket emit:(NSString HERE) args:@[(NSArray HERE)]];
}
继承我尝试的内容:
if (self.socketIsConnected)
{
NSDictionary *deviceDic = @{@"username": @"drew", @"chatHash":@"FJHE8"};
[self.socket emit:@"adduser" args:@[[NSString stringWithFormat: @"%@", deviceDic]]];
}
“args”param请求NSArray,但我需要发送一个如下所示的JSON对象:
{"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];
我看了一下服务器。它使用throw异常崩溃了我的服务器。它收到的唯一数据是:
用户名
答案 0 :(得分:0)
您似乎正在使用SIOSocket。文档不是很清楚但是查看emit函数的源(https://github.com/MegaBits/SIOSocket/blob/master/SocketIO/Source/SIOSocket.m),你需要做的就是传递一个NSArray,第一个参数是NSDictionary。字典将被框架序列化为JSON对象。
您可以在emit调用中拥有多个参数。参数中每个参数的类型取决于您传递的数组中的对象类型。如果你传递一个字典,它会将它转换为JSON对象,数组为数组,数字为数字,字符串为字符串。
答案 1 :(得分:0)
您可以使用
NSDictionary *subArgs = @{@"state" : @true};
[self.socket emit:@"adduser" args:@[subArgs]];
这将解决问题。