指定 NSDictionary 条目的值类型
Posted
技术标签:
【中文标题】指定 NSDictionary 条目的值类型【英文标题】:Specify value type of NSDictionary entries 【发布时间】:2016-07-12 15:22:27 【问题描述】:对于NSArray
,Objective-C 允许我们指定要存储在数组中的值的类型。例如,我可以声明一个NSString
的数组,如下所示:
NSArray<NSString*> *arrayOfStrings;
虽然它不一定由编译器和运行时环境强制执行,但这样的指示对于可读性和稍微简单的代码语法都很方便。
我想知道NSDictionary
是否存在这样的语法。例如,要指定字典中的值类型,是否存在类似以下内容:
NSDictionary<UIImage*> *imageMappings;
字典的值被指定为UIImage
类型。
其他问题:
可以为NSDictionary
指定密钥类型吗?
如果可能,如何指定没有键类型的值类型?
Foundation
中是否还有其他具有此通用参数化的常见数据结构?
【问题讨论】:
【参考方案1】:对于NSDictionary
,您指定键和值的类型:
NSDictionary<NSString*, UIImage*> *imageMappings
如果您不想要特定类型的密钥,请使用id<NSCopying>
甚至NSObject *
。
只有 NSArray
和 NSDictionary
支持这种表示法。
【讨论】:
id
或 id<NSCopying>
会比 NSObject *
更好
我不知道这些是否是有效的类型说明符。
我不明白答案 - 它缺乏“如何”语义。您能否提供一个简单的语法示例?我已经尝试了 10 种不同的方法,但无济于事。
NSDictionary<KeyType*, ValueType*> *myTypedDictionary
.以上是关于指定 NSDictionary 条目的值类型的主要内容,如果未能解决你的问题,请参考以下文章
无法分配“NSDictionary”类型的值?键入“字符串?”
无法将“__NSArrayM”类型的值转换为“NSDictionary”
不能用字符串类型的索引下标 NSDictionary 类型的值
无法将“__NSSingleObjectArrayI”类型的值转换为“NSDictionary”