CoreData中访问托管对象的NSSet关系属性导致崩溃的解决

本文介绍了再少数情况下,当访问CoreData托管对象中的NSSet关系属性引起App崩溃的现象以及解决.

现象

在访问托管对象的traces关系属性时,App崩溃,提示:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSMutableSet unionSet:]: set argument is not an NSSet'

traces的类型是NSSet.

实际的代码为:

if let ary = traces?.allObjects as? [HabitTrace]{
    return ary
}
return []

我们再回溯一下崩溃时堆栈里值得注意的的信息:

0   CoreFoundation                      	0x00000001105611bb __exceptionPreprocess + 331
	1   libobjc.A.dylib                     0x000000010f49a735 objc_exception_throw + 48
	2   CoreFoundation                      0x00000001104ad4ec _CFThrowFormattedException + 194
	3   CoreFoundation                      0x00000001105499f5 -[NSMutableSet unionSet:] + 581
	4   CoreData                            0x000000010ff1f3c6 -[_NSFaultingMutableSet willReadWithContents:] + 934
	5   CoreData          

猜你喜欢

转载自blog.csdn.net/mydo/article/details/85482963