Swift更改块的参数类型,这也是Objective-C方法的参数

时间:2014-11-08 16:22:50

标签: ios objective-c swift objective-c-blocks

我有一个Objective-C类,它包含带有块参数的方法:

+ (void)getCurrentUserInfoWithToken:(NSString*)token completionHandler:(void (^)(NSDictionary* userData))handler

如您所见,该块具有NSDictionary参数。但是当我尝试在swift中强制转换此方法时,它会出错:“'[NSObject:AnyObject]'与'NSDictionary'不同。”这是我的Swift代码:

ClockfaceAPI.getCurrentUserInfoWithToken(token, completionHandler: {
            (userData : NSDictionary!) in
            // block implementation goes here
})

我不知道如何解决它= /

1 个答案:

答案 0 :(得分:1)

这是有道理的,因为你的NSDictionary *被解释为[NSObject:AnyObject]

您不必指定类型。例如。只说不userData的{​​{1}}就行了。 Swift会根据声明自动推断出类型。

: NSDictionary!