我一直在尝试在我的应用程序中实现一个简单的核心数据功能,以便它仅在应用程序第一次加载时显示一个教程(一个带有滚动页面的单独视图控制器),并且每隔一次就绕过它。我从 Swift 2 的 CoreData 教程开始语法,但后来不得不根据 Swift 3 的自动更正和其他帮助我克服在此过程中发现的错误的教程(例如 SIGBRT)进行调整。我目前遇到的问题是 EXC_BAD_INSTRUCTION 错误,我需要帮助修复它。
我有一个带有以下代码的 scrollViewController:
class ScrollViewController: UIViewController, NSFetchedResultsControllerDelegate {
@IBOutlet var mainScrollView: UIScrollView!
@IBOutlet weak var endTutorial: UIButton!
var imageArray = [UIImage]()
class Person: NSManagedObject {
@NSManaged var tutorialstatus: String?
}
func seed() {
let moc = DataController().managedObjectContext
let entityDes = NSEntityDescription.entity(forEntityName: "Person", in: moc)
let entity = Person(entity: entityDes!, insertInto: moc)
entity.tutorialstatus="test value"
do {
try moc.save()
} catch {
fatalError("Failure to save context: \(error)")
}
}
func fetch() {
let moc = DataController().managedObjectContext
let personFetch = NSFetchRequest<Person>(entityName: "Person")
do {
let fetchedPerson = try moc.fetch(personFetch)
print(fetchedPerson.first!.tutorialstatus)
} catch {
fatalError("Failed to fetch person: \(error)")
}
}
在该let fetchedPerson = try moc.fetch(personFetch)
行,当我尝试编译时,我看到错误EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0)
我正在使用 Xcode 8,Beta 8。我有一个名为“CoreDataStuf.xcdatamodeld”的 swift 文件,它有一个名为“Person”的实体,其属性名为 tutorialstatus,它是一个字符串。我还给该实体一个 Person 类。我还有一个 DataController.swift 文件,我在其中引用了 URL CoreDataStuf。