AnyObject不是SIOParameterArray的子​​类型

时间:2014-10-25 13:35:16

标签: swift

我使用SIOSocket连接到NodeJs,这是我的代码

  

SIOSocket.socketWithHost(“XXXXXXXXXX”,回复:{   

中的(socket:SIOSocket!)
  self.socket = socket;
  self.socket.on("move", callback: { (args:SIOParameterArray)  in
      println("aaa")
  })
     

})

但行中有错误

self.socket.on("move", callback: { (args:SIOParameterArray) in
'[AnyObject]!' is not a subtype of 'SIOParameterArray'

2 个答案:

答案 0 :(得分:0)

回调参数是可选SIOParameterArray,而不是SIOParameterArray

所以你需要写

  self.socket.on("move", callback: { (args:SIOParameterArray!)  in

如果你想要打开包装或

  self.socket.on("move", callback: { (args:SIOParameterArray?)  in

如果你想要自己的

答案 1 :(得分:0)

SIOParameterArray只是NSArray的别名。 所以,这个Objective-C定义:

typedef NSArray SIOParameterArray

@interface SIOSocket : NSObject
- (void)on:(NSString *)event callback:(void (^)(SIOParameterArray *args))function;
@end

与:

相同
@interface SIOSocket : NSObject
- (void)on:(NSString *)event callback:(void (^)(NSArray *args))function;
@end

它被翻译为Swift:

class SIOSocket : NSObject {
    func on(event: String!, callback function: (([AnyObject]!) -> Void)!)
}

因此,您可以使用[AnyObject]!编译器说:

SIOSocket.socketWithHost("XXXXXXXXXX", response: { (socket:SIOSocket!) in

    self.socket = socket;
    self.socket.on("move", callback: { (args:[AnyObject]!)  in
        println("aaa")
    })
})