[英]How to pass a Dictionary to Objective-C method in Swift
我需要將字典傳遞給Swift中的Objective-C方法。 在Swift中,代碼如下:
let modelData: Dictionary<String, [Double]> = getModelData()
result = myChilitags.estimate3D(configAt: configFilePath, forModel: modelData);
(配置文件與此問題無關,只需忽略它即可。)
我使用了.h
文件:
@interface myChilitags : NSObject
+ (nonnull UIImage *)estimate3D:configAt:(NSString *)configFilePath forModel:(nonnull NSDictionary*) modelData;
@end
問題是,我需要對Objective-C方法estimate3D
modelData
中的modelData
做些事情,但是在將Dictionary值modelData
傳遞給該方法后,我不知道該怎么辦。
我試圖只打印modelData值,但結果是:
1
我也嘗試在字典中打印值,例如:
std::cout << modelData["face001"] << std::endl;
我很確定字典中有一個鍵"face001"
,但結果仍然是:
1
我知道它一定與NSDictionary和Dictionary有關,但我只是不知道該怎么辦。
首先,Swift中的Dictionary是struct,NSDictionary是class。
Objective-C不是類型安全的,因此不會顯示錯誤。
如果您嘗試在Swift中做同樣的事情,它將告訴您
Cannot assign value of type '[String : [Double]]' to type 'NSDictionary'
let swiftDictionary = [String: [Double]]()
var nsDictionary = NSDictionary()
nsDictionary = swiftDictionary //shows error
因此,您必須將Swift字典轉換為NSDictionary。
let modelData: Dictionary<String, [Double]> = getModelData()
let nsModelData = NSDictionary(dictionary: modelData)
result = myChilitags.estimate3D(configAt: configFilePath, forModel: nsModelData);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.