这个问题是对
this question的跟进.我使用的是
http://code.google.com/p/json-framework/发现的JSON库.
My Core Data对象模型与其自身具有多对多关系,因此,其子对象具有一个集合.在JSON中,集合通过对象ID数组表示.没什么异国情调.
当我通过解析json字符串得到的对象结构在托管对象上调用setValuesForKeysWithDictionary时,我收到以下异常:
*** Terminating app due to uncaught exception
‘NSInvalidArgumentException’,reason:
‘-[__NSArrayM minusSet:]: unrecognized
selector sent to instance 0x6c7b440’
如果有人可以解释原因,我全都耳朵.我也从未定义的密钥中收到一些异常,但这是可以理解的(JSON包含额外的字段)并且完全可管理.
现在我的问题是:
我在这里遗漏了一些东西,因为在另一个问题中,回答的人和OP没有报告任何这个问题.我可以通过覆盖setValuesForKeysWithDictionary来修补它并处理错误的操作,并在密钥是关系时传递,但这使得代码不那么通用,我非常喜欢.
解决方法
我认为问题在于您的JSON反序列化正在创建数组,但是托管对象到多个关系由集合表示.即你需要NSSet而不是NSArray.您可以通过执行[NSSet setWithArray:theArray]将NSArray转换为NSSet.