Swift3 CoreData 在 iOS9 设备上崩溃
Swift3 CoreData crash on iOS9 device
我有 CoreData 应用程序,它在 iOS10 上完美运行,用 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
我的配置:
所有 类 都是由 Xcode 生成的。我试过删除模块和所有配置。有人知道如何让它发挥作用吗?
出于某种原因,NSSet 是预期的,但您的 NSManagedObject 代码具有 NSOrderedSet,它是 NSObject 的子类。尝试删除核心数据模型中的 "Arrangment: Ordered" 复选标记并将这些关系重构为 NSSet。
不知道为什么这会发生在 iOS 10 而不是 iOS 9。
P.S。也许您应该重新考虑您的核心数据模型?您的 Open/Closed 问题似乎要更改其状态。如果是这样,我建议使用 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)
}
希望对大家有所帮助。
我有 CoreData 应用程序,它在 iOS10 上完美运行,用 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
我的配置:
所有 类 都是由 Xcode 生成的。我试过删除模块和所有配置。有人知道如何让它发挥作用吗?
出于某种原因,NSSet 是预期的,但您的 NSManagedObject 代码具有 NSOrderedSet,它是 NSObject 的子类。尝试删除核心数据模型中的 "Arrangment: Ordered" 复选标记并将这些关系重构为 NSSet。 不知道为什么这会发生在 iOS 10 而不是 iOS 9。
P.S。也许您应该重新考虑您的核心数据模型?您的 Open/Closed 问题似乎要更改其状态。如果是这样,我建议使用 closed
bool 或 status
int.
我在使用 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)
}
希望对大家有所帮助。