簡體   English   中英

如何在Swift中將字典傳遞給Objective-C方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM