2014-12-19 30 views
0

我试图从Swift类中的完成块中运行Objective-C类中的方法,但是我遇到了一些麻烦。Swift错误中的Objective-C完成块

的OBJ-C代码:

typedef void(^completionBlock)(NSDictionary *); 

+ (void)getVersionsFromAPI:(completionBlock)sendData 
{ 
    NSDictionary *dict = [[NSDictionary alloc] init]; 
    // Do stuff 
    sendData(dict); 
} 

斯威夫特代码:

API.getVersionsFromAPI { (ver : NSDictionary) -> Void in 
    self.version = ver.mutableCopy() as NSMutableDictionary; 
} 

我收到说,在第一行'[NSObject : AnyObject]!' is not a subtype of 'NSDictionary'错误。

+0

您是否尝试过使用'ver:NSDictionary!'或'ver:NSDictionary?'? – Antonio

+0

是的,然后说'[NSObject:AnyObject]!'与使用'!'时的'NSDictionary''或'?'的第一个错误不同。 –

回答

2

我相信该version属性是一个可选NSMutableDictionary

var version: NSMutableDictionary? 

如果这是正确的,应该比你解决你的代码如下:

API.getVersionsFromAPI { (ver: [NSObject: AnyObject]?) in 
    if let ver = ver { 
     self.version = NSMutableDictionary(dictionary: ver) 
    } 
} 

我已经成功地编译此代码Xcode 6.1.1

+0

完美,谢谢。 –