是否有用于创建条件NSDictionary的速记语法?

百夫长

有没有办法创建条件NSDictionary?例如,假设有一个具有3个属性的自定义类:

class UserInfoObject
   firstName
   lastName
   address

我需要为userInfoObject之外的非null属性创建NSDictionary。当我事先知道哪些属性为非零时,这很简单,因此我可以使用这种速记语法(或经典的语法):

NSDictionary *userInfoDic = @{@"firstName": userInfoObject.firstName, @"lastName":userInfoObject.lastName, @"address":userInfoObject.address}

但是,就我而言,我需要创建可变字典,然后对每个属性进行手动检查/添加。下面还有另一种较短的方法吗?

// Create mutable thing
NSMutableDictionary *userInfoDic = [NSMutableDictionary new];

// Check and add first name
if (userInfoDic.firstName) {
   userInfoDic[@"firstName"] = userInfoDic.firstName;
}

// Check and add last name 
if (userInfoDic.lastName) {
   userInfoDic[@"lastName"] = userInfoDic.lastName;
}

// Check and add address
if (userInfoDic.address) {
   userInfoDic[@"address"] = userInfoDic.address;
}

我有很多类和属性,因此速记(如果存在)可以简化此过程:)

杰尔图顿

NSMutableDictionary已经做到了

setValue:forKey: 为可变字典执行此操作:

此方法使用来向字典添加值和键setObject:forKey:,除非value为nil,在这种情况下,该方法将尝试使用删除键removeObjectForKey:

因此,请使用setValue:forKey:代替setObject:forKey:此方法没有简写文字。您可以编写自己的NSMutableDictionary子类并进行重写setObject:forKeyedSubscript:以安全地忽略nil对象,但这似乎工作太多。如文件所述:

通常,几乎不需要将NSMutableDictionary子类化。如果确实需要自定义行为,通常最好考虑组成而不是子类化。

这意味着您应该(而不是子类)创建自己的包装对象,该对象具有NSMutableDictionary作为后备存储,并实现访问内部字典所需的所有方法,setObject:forKeyedSubscript:从而可以与nil一起使用。但是我不建议您只是为了避免在其他地方写几行代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否有用于创建条件NSDictionary的速记语法?

来自分类Dev

是否有用于$ _比较的PowerShell 3简化语法?

来自分类Dev

是否有用于复杂比较的漂亮语法?

来自分类Dev

是否有用于“

来自分类Dev

是否有用于实施条件重启系统的书/指南

来自分类Dev

是否有用于创建空白图像的实用程序?

来自分类Dev

是否有用于创建警报的 URI 格式?

来自分类Dev

是否有创建地图的速记方法?

来自分类Dev

是否有用于为“ statsmodels”指定“基准”模型的“ patsy”公式语法

来自分类Dev

在Ruby中是否有用于链接yield调用的简洁语法?

来自分类Dev

表达式中是否有用于类型注释的语法?(示例用例:默认特征)

来自分类Dev

Rust是否具有用于使用较早的字段初始化struct字段的语法?

来自分类Dev

表达式中是否有用于类型注释的语法?(示例用例:默认特征)

来自分类Dev

Rust是否具有用于使用较早的字段初始化struct字段的语法?

来自分类Dev

是否有用于Rails的WYSIWYG,可让您对F#进行语法高亮显示?

来自分类Dev

Haskell是否有用于创建将函数应用于列表的各种变体的函数

来自分类常见问题

是否有用于嘲笑存根的`not` ArgumentMatcher

来自分类Dev

是否有用于Rust的gzip库?

来自分类Dev

是否有用于“完美”压缩的算法?

来自分类Dev

是否有用于Scala的Rubocop?

来自分类Dev

是否有用于使用Drools的GUI?

来自分类Dev

是否有用于arangoDB的工具

来自分类Dev

是否有用于流星的JSFiddle版本?

来自分类Dev

是否有用于OpenBSD的PaxTest?

来自分类Dev

是否有用于UWP的振动API?

来自分类Dev

是否有用于IntelliJ的ASTNode库?

来自分类Dev

是否有用于 XML 的 SQL?

来自分类Dev

是否有用于创建SQL Server查询和操作的简单GUI?

来自分类Dev

是否有用于从安装过程创建安装程序的软件(替代InstallRite)

Related 相关文章

  1. 1

    是否有用于创建条件NSDictionary的速记语法?

  2. 2

    是否有用于$ _比较的PowerShell 3简化语法?

  3. 3

    是否有用于复杂比较的漂亮语法?

  4. 4

    是否有用于“

  5. 5

    是否有用于实施条件重启系统的书/指南

  6. 6

    是否有用于创建空白图像的实用程序?

  7. 7

    是否有用于创建警报的 URI 格式?

  8. 8

    是否有创建地图的速记方法?

  9. 9

    是否有用于为“ statsmodels”指定“基准”模型的“ patsy”公式语法

  10. 10

    在Ruby中是否有用于链接yield调用的简洁语法?

  11. 11

    表达式中是否有用于类型注释的语法?(示例用例:默认特征)

  12. 12

    Rust是否具有用于使用较早的字段初始化struct字段的语法?

  13. 13

    表达式中是否有用于类型注释的语法?(示例用例:默认特征)

  14. 14

    Rust是否具有用于使用较早的字段初始化struct字段的语法?

  15. 15

    是否有用于Rails的WYSIWYG,可让您对F#进行语法高亮显示?

  16. 16

    Haskell是否有用于创建将函数应用于列表的各种变体的函数

  17. 17

    是否有用于嘲笑存根的`not` ArgumentMatcher

  18. 18

    是否有用于Rust的gzip库?

  19. 19

    是否有用于“完美”压缩的算法?

  20. 20

    是否有用于Scala的Rubocop?

  21. 21

    是否有用于使用Drools的GUI?

  22. 22

    是否有用于arangoDB的工具

  23. 23

    是否有用于流星的JSFiddle版本?

  24. 24

    是否有用于OpenBSD的PaxTest?

  25. 25

    是否有用于UWP的振动API?

  26. 26

    是否有用于IntelliJ的ASTNode库?

  27. 27

    是否有用于 XML 的 SQL?

  28. 28

    是否有用于创建SQL Server查询和操作的简单GUI?

  29. 29

    是否有用于从安装过程创建安装程序的软件(替代InstallRite)

热门标签

归档