ios – 合并词典 – 不兼容的类型错误

ios – 合并词典 – 不兼容的类型错误,第1张

概述我一直试图将两个NSDictionaries合并几个小时.搜索并发现我可以使用[NSMutableDictionary addEntriesFromDictionary:]. NSDictionary *areaAttributes = [[area entity] attributesByName]; NSDictionary *gpsAttributes = [[gps entity] 我一直试图将两个NSDictionarIEs合并几个小时.搜索并发现我可以使用[NSMutableDictionary addEntrIEsFromDictionary:].
NSDictionary *areaAttributes = [[area entity] attributesByname];    NSDictionary *gpsAttributes = [[gps entity] attributesByname];    NSMutableDictionary *areaAttributesM = [areaAttributes mutablecopy];    NSMutableDictionary *gpsAttributesM = [gpsAttributes mutablecopy];    NSMutableDictionary *combinedAttributes =  [areaAttributesM addEntrIEsFromDictionary:gpsAttributesM];

但我得到错误:

Initializing 'NSMutableDictionary *_strong' with an Expression of incompatible type 'voID'

所以这就是说[areaAttributesM addEntrIEsFromDictionary:gpsAttributesM]返回voID?我的理解是否正确?为什么它回归无效?

解决方法 是的,你是对的.从 the docs开始:
- (voID)addEntrIEsFromDictionary:(NSDictionary *)otherDictionary

至于为什么,这很简单:在Cocoa中改变对象的函数通常返回voID,因此您可以轻松地将它们与返回不同对象的函数区分开来.

此外,没有理由对gpsAttributes字典进行mutablecopy;它只是被用作 – [addEntrIEsFromDictionary:]的参数,它不需要是可变的.

所以,正确的方法是:

NSDictionary *areaAttributes = [[area entity] attributesByname];NSDictionary *gpsAttributes = [[gps entity] attributesByname];NSMutableDictionary *combinedAttributes = [areaAttributes mutablecopy];[combinedAttributes addEntrIEsFromDictionary:gpsAttributes];

如果您经常这样做,您可能希望将其包装在函数(或NSDictionary上的类别中的方法)中:

NSDictionary *mergeDictionarIEs(NSDictionary *lhs,NSDictionary *rhs) {    NSMutableDictionary *ret = [lhs mutablecopy];    [ret addEntrIEsFromDictionary:rhs];    return ret;}
总结

以上是内存溢出为你收集整理的ios – 合并词典不兼容的类型错误全部内容,希望文章能够帮你解决ios – 合并词典 – 不兼容的类型错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1105447.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存