在Objective-C中输入defde NSDictionary的合法方法是什么?

Rah*_*hul 3 objective-c foundation ios swift

我试图在Swift中使用Objective-C API,我必须将Swift Dictionary强制转换为NSSDictionary,但是如果我能以某种方式声明下面编写的NSDictionary,我可以浏览多余的类型转换.

typedef NSDictionary* NSDictionary<NSString *, id> *;
Run Code Online (Sandbox Code Playgroud)

在我的Objective-C API中有几个字典,我希望它们都转换成上面的typdef.

Cod*_*ent 9

您正在试图重新定义所有NSDictionary作为NSDictionary<NSString *, id>.这是一个很大的禁忌.相反,创建自己的类型:

typedef NSDictionary<NSString *, id> MyDictionary;

// Usage
MyDictionary * dict = [MyDictionary dictionaryWithObjectsAndKeys:@1,@"one", @2,@"two", @3,@"three", nil];
Run Code Online (Sandbox Code Playgroud)

迅速:

typealias MyDictionary = [String: Any]

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

func doSomething(aDict: MyDictionary) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)