【问题标题】:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSSet intersectsSet:]: set argument is not an NSSet'由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*** -[NSSet intersectsSet:]: set argument is not an NSSet”
【发布时间】:2017-03-01 11:58:05
【问题描述】:

我想以相同的顺序存储学生信息,即它是如何来自服务调用的。例如,

{  
    {
        department: "C.Sci",
        students: [
            Amul,
            Ankit,
            Anoop
        ]
    },
    ........
    ........
    {
        department: "M.Sci",
        students: [
            Bosch,
            Peter,
            Vinya
        ]
    }
}

所以,我使用 NSOrderedSet 来实现这一点,但我的应用程序最终崩溃了。此外,在显示数据模型检查器中选中“有序”复选框。有什么帮助吗?

【问题讨论】:

  • 能否分享导致崩溃的代码。
  • Core Data 在幕后使用了各种魔法。 intersectsSet: 方法显然是 Core Data 在将对象添加到特定关系时使用的方法。如果你查看 NSOrderedSet 的 intersectsSet: 方法,你会发现它需要一个 NSSet 作为它的参数——显然它没有得到。在没有更多详细信息的情况下,我只能告诉你这些。

标签: ios core-data swift3 xcode8


【解决方案1】:

NSOrderedSet 有点像数组,(但对象不能插入两次),有点像集合,(但对象有顺序),两者都不是子类。因此,如果您有一个需要NSSet 的方法,NSOrderedSet 就不会削减它。您可以使用setNSOrderedSet 方法获取NSSet

NSOrderedSet* myOrderedSet = ...
NSSet* mySet = ...
//[mySet intersectsSet:myOrderedSet]; //bad crashes!!
[mySet intersectsSet:myOrderedSet.set]; //good! no crash

【讨论】:

  • 感谢您的评论。我知道,我的问题是应用程序崩溃,如果我使用NSOrderSet,如何纠正它。
  • 我没有使用任何 intersectsSet,我只是想将一个对象添加到NSOrderedSet 关系对象中,然后应用程序崩溃。
猜你喜欢
  • 2014-10-07
  • 2018-04-05
  • 2015-09-08
  • 2013-04-27
  • 2021-09-17
  • 2012-07-12
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多