【发布时间】:2016-09-07 05:10:17
【问题描述】:
我一直在尝试在我的应用程序中实现一个简单的核心数据功能,以便它仅在应用程序第一次加载时显示教程(带有滚动页面的单独视图控制器),并且每隔一次就绕过它。 我从 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”的快速文件,它有一个名为“Person”的实体,其属性名为 tutorialstatus,它是一个字符串。我还给该实体一个 Person 类。 我还有一个 DataController.swift 文件,我在其中引用了 URL CoreDataStuf。
【问题讨论】:
-
本教程在CoreDate中提供插入、更新、删除和列表演示:iosdevcenters.blogspot.com/2016/06/…
-
放一些断点看看
moc和personFetch是否不为零。另外,我认为您的意思是您在运行时而不是在编译期间收到错误? -
是的,你是对的 - 我在运行时得到它而不是编译。
-
你的应用是基于 tableView 的?
-
Xcode 8 不支持您提供的 fetch 请求。
标签: ios core-data fetch swift3 xcode8-beta6