
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 – 合并词典 – 不兼容的类型错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)