指定 NSDictionary 条目的值类型

Iow*_*a15 3 generics objective-c nsdictionary nsarray

对于NSArray,Objective-C 允许我们指定要存储在数组中的值的类型。例如,我可以声明一个 的数组,NSString如下所示:

NSArray<NSString*> *arrayOfStrings;
Run Code Online (Sandbox Code Playgroud)

虽然编译器和运行时环境不一定强制执行,但这样的指示对于可读性和稍微简单的代码语法来说都很方便。

我想知道是否存在这样的语法NSDictionary。例如,要指定字典中的值类型,是否存在类似以下内容:

NSDictionary<UIImage*> *imageMappings;
Run Code Online (Sandbox Code Playgroud)

其中字典的值被指定为类型UIImage

附加问题:

可以指定密钥类型吗NSDictionary

如果可能,如何在没有键类型的情况下指定值类型?

是否有其他常见的数据结构Foundation具有这种通用参数化?

Avi*_*Avi 5

对于NSDictionary,您可以指定键和值的类型:

NSDictionary<NSString*, UIImage*> *imageMappings
Run Code Online (Sandbox Code Playgroud)

如果您不想要密钥的特定类型,请使用id<NSCopying>甚至NSObject *.

NSArrayNSDictionary支持这种表示法。

  • `NSDictionary&lt;KeyType*, ValueType*&gt; *myTypedDictionary`。 (12认同)