2017-12-31 60 views
1

辞書をSwiftのObjective-Cメソッドに渡す必要があります。SwiftのObjective-Cメソッドに辞書を渡す方法

@interface myChilitags : NSObject 
+ (nonnull UIImage *)estimate3D:configAt:(NSString *)configFilePath forModel:(nonnull NSDictionary*) modelData; 
@end 

:私は.hファイルを使用

let modelData: Dictionary<String, [Double]> = getModelData() 
result = myChilitags.estimate3D(configAt: configFilePath, forModel: modelData); 

(のconfigureファイルは、この問題とは何の関係もありません、それを無視する。)

:スウィフトでは、コードは次のようです問題は私がObjective-Cメソッドestimate3DmodelDataで何かする必要があることです。しかし、辞書値modelDataをメソッドに渡した後に何をすべきかわかりません。

私はちょうどmodelData値を印刷しようとしたが、出てきたことすべては:

1 

私も同じようディクショナリに値をプリントしようとした:私はかなり確信している

std::cout << modelData["face001"] << std::endl; 

そこに辞書内のキー"face001"はあるが、結果はまだあった:

1 

NSDictionaryとDictionaryとは何か関係がありますが、私は何をすべきか分かりません。

+0

可能な重複:[スウィフトからObjective-Cのコードを呼び出す方法](https://stackoverflow.com/questions/24002369/how-to-call-objective-c-code-from-swift) – Miket25

+0

私はこれが重複しているとは思わない。 OPの例はObjective-CではなくObjective-C++ *です –

答えて

0

まず、SwiftのDictionaryは構造体であり、NSDictionaryはクラスです。
Objective-Cはタイプセーフではないため、エラーは表示されません。あなたはスウィフトで同じことをしようとした場合
、それはあなたはNSDictionaryのにスウィフト辞書を変換する必要があり Cannot assign value of type '[String : [Double]]' to type 'NSDictionary'

let swiftDictionary = [String: [Double]]() 
var nsDictionary = NSDictionary() 
nsDictionary = swiftDictionary //shows error 

あなた
を教えてくれます。

let modelData: Dictionary<String, [Double]> = getModelData() 
let nsModelData = NSDictionary(dictionary: modelData) 
result = myChilitags.estimate3D(configAt: configFilePath, forModel: nsModelData); 
関連する問題