2014-12-19 78 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

完美,謝謝。 –