【问题标题】:Specify value type of NSDictionary entries指定 NSDictionary 条目的值类型
【发布时间】:2016-07-12 15:22:27
【问题描述】:

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

NSArray<NSString*> *arrayOfStrings;

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

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

NSDictionary<UIImage*> *imageMappings;

字典的值被指定为UIImage 类型。

其他问题:

可以为NSDictionary指定密钥类型吗?

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

Foundation 中是否还有其他具有此通用参数化的常见数据结构?

【问题讨论】:

    标签: objective-c generics nsarray nsdictionary


    【解决方案1】:

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

    NSDictionary<NSString*, UIImage*> *imageMappings
    

    如果您不想要特定类型的密钥,请使用id&lt;NSCopying&gt; 甚至NSObject *

    只有 NSArrayNSDictionary 支持这种表示法。

    【讨论】:

    • idid&lt;NSCopying&gt; 会比 NSObject * 更好
    • 我不知道这些是否是有效的类型说明符。
    • 我不明白答案 - 它缺乏“如何”语义。您能否提供一个简单的语法示例?我已经尝试了 10 种不同的方法,但无济于事。
    • NSDictionary&lt;KeyType*, ValueType*&gt; *myTypedDictionary.
    猜你喜欢
    • 2017-03-17
    • 1970-01-01
    • 2016-04-28
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    相关资源
    最近更新 更多