繁体   English   中英

iOS9设备上的Swift3 CoreData崩溃

[英]Swift3 CoreData crash on iOS9 device

我有完全在iOS10上运行的CoreData应用程序,用Swift3编写,支持iOS 8.4及更高版本。

当我尝试在iOS 9.3.5上运行它时,我收到错误:

2016-10-07 17:47:20.596 FormApp[710:179733] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSSet intersectsSet:]: set argument is not an NSSet'

在线崩溃:

form.addToOpenQuestions(openQuestion)

我已将@objc()添加到托管对象类。 然后我收到了新的错误:

CoreData: warning: Unable to load class named 'FormApp.Form' for entity 'Form'.  Class not found, using default NSManagedObject instead.

它正在线上发生:

let form = NSEntityDescription.insertNewObject(forEntityName: "Form", into: managedObjectContext) as! Form

我的配置:

enity的设置

类

模型

属性扩展

所有类都是由Xcode生成的。 我试过删除模块和所有配置。 任何人都知道如何使它工作?

由于某种原因,NSSet是预期的,但您的NSManagedObject代码具有NSOrderedSet,它是NSObject的子类。 尝试删除核心数据模型中的“Arrangment:Ordered”复选标记,并将这些关系重构为NSSet。 不知道为什么在iOS 10中会发生这种情况,但在iOS 9中却没有。

PS也许你应该重新考虑你的核心数据模型? 看起来你的开放/封闭问题会改变他们的状态。 如果是这样,我建议使用closed bool或status int制作一个Question实体。

我遇到了与iOS 9.3相同的问题

问题与@alex上面提到的相同,我已解决如下问题

if #available(iOS 11.0, *) {
        // use iOS 11-only feature
        YOUR_CLASS.insertIntoClosedQuestion(YOUR_OBJECT, at: index)
    } else {
        // handle older versions
        let orderset:NSMutableOrderedSet = Form.closeQuestion as! NSMutableOrderedSet
        orderset.insert(YOUR_OBJECT, at: index)
        YOUR_CLASS.addToClosedQuestion(orderset)
    }

希望它对其他人有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM