2015-06-21 30 views
4

在我們的Swift應用程序中,我們在調用Objective-C庫時遇到了問題。目標是引用已從NSDictionary通過橋接標頭轉換的字典中的元素。如何在從NSDictionary橋接後引用[NSObject:AnyObject]中的元素

的Objective-C函數簽名:

vision (PBJVision *)vision capturedVideo:(nullable NSDictionary *)videoDict error:(nullable NSError *)error; 

斯威夫特轉換:

func vision(vision: PBJVision, capturedVideo videoDict: [NSObject : AnyObject]?, error: NSError?) 

我們希望下面的等值斯威夫特:

outputPath = [videoDict objectForKey:PBJVisionVideoPathKey]; 

我們試圖videoDict["PBJVisionVideoPathKey"]videoDict[PBJVisionVideoPathKey],和谷歌參考文獻還沒有涉及如何參考當NSObject是關鍵字時的字典元素。錯誤的Xcode給人是Could not find overload for "subscript" that accepts the supplied arguments.

回答

0

可能不是最優雅的方法,但這個工作:

let castedVideoDict = videoDict as! Dictionary<String, NSObject>   
    let filePath = castedVideoDict["PBJVisionVideoPathKey"] as! String 
0

除非我誤解你的問題,你想

let outputPath = videoDict[PBJVisionVideoPathKey] 
+0

對不起,那是一個錯字。是的,我們已經嘗試過,但沒有奏效。 – Crashalot

+0

什麼是錯誤消息。很難弄清楚如果你不說,有什麼不對... –

0

關鍵是PBJVisionVideoPathKey,而不是 「objectForKey:PBJVisionVideoPathKey」

videoDict[PBJVisionVideoPathKey] 
+0

對不起,這是一個錯字。是的,我們已經嘗試過,但沒有奏效。 – Crashalot

相關問題