2015-11-04 57 views
3

我想在Swift中使用Objective-C API,並且必須將Swift Dictionary轉換爲NSSDictionary,但是如果某種方式我可以用下面的書面格式聲明NSDictionary,那麼可以省略多餘的類型轉換。在Objective-C中typedef NSDictionary的合法方法是什麼?

typedef NSDictionary* NSDictionary<NSString *, id> *; 

在我的Objective-C API中有幾個字典,我希望它們都轉換成上面的typdef。

回答

7

您正試圖將所有NSDictionary重新定義爲NSDictionary<NSString *, id>。這是一個很大的禁忌。相反,創建自己的類型:

typedef NSDictionary<NSString *, id> MyDictionary; 

// Usage 
MyDictionary * dict = [MyDictionary dictionaryWithObjectsAndKeys:@1,@"one", @2,@"two", @3,@"three", nil]; 

斯威夫特:

typealias MyDictionary = [String: Any] 

let aDict: MyDictionary = [ 
    "one": 1, "two": 2, "three": 3 
] 

func doSomething(aDict: MyDictionary) { 
    // ... 
} 
+0

幾乎所有的字典是論點例如運作 'postMethod(((NSDictionary *)parameters)',我試圖改變這一點。上面提到的方法將需要很多更改。 – Rahul

相關問題