Ios 使用自定义Swift NSManagedObject进行prepareForSegue:自定义类崩溃?
fetchedresultController不会在prepareForSegue中返回我的自定义nsmanagedObject 当我在tableView中添加一个新条目(调用“insertNewObject”的“+”按钮)时,将显示来自我的自定义对象的正确名称以及正确的文本。但是,当我单击该行执行segue时,出现了一个崩溃,exc断点,我单击continue,程序继续运行,没有添加更多信息 将nsmanagedObject强制转换为Ios 使用自定义Swift NSManagedObject进行prepareForSegue:自定义类崩溃?,ios,swift,core-data,crash,segue,Ios,Swift,Core Data,Crash,Segue,fetchedresultController不会在prepareForSegue中返回我的自定义nsmanagedObject 当我在tableView中添加一个新条目(调用“insertNewObject”的“+”按钮)时,将显示来自我的自定义对象的正确名称以及正确的文本。但是,当我单击该行执行segue时,出现了一个崩溃,exc断点,我单击continue,程序继续运行,没有添加更多信息 将nsmanagedObject强制转换为节类的代码: override func prepareFo
节
类的代码:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail" {
if let indexPath = self.tableView.indexPathForSelectedRow() {
println("idx: \(indexPath) , objet : \(self.fetchedResultsController.objectAtIndexPath(indexPath))") //outputs ""
let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as Section//NSManagedObject
let controller = (segue.destinationViewController as UINavigationController).topViewController as DetailViewController
//controller.detailItem = object
controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
controller.navigationItem.leftItemsSupplementBackButton = true
}
}
}
var fetchedResultsController: NSFetchedResultsController {
if _fetchedResultsController != nil {
return _fetchedResultsController!
}
let fetchRequest = NSFetchRequest()
let entity = NSEntityDescription.entityForName("Section", inManagedObjectContext: self.managedObjectContext!)
fetchRequest.entity = entity
fetchRequest.fetchBatchSize = 20
let sortDescriptor = NSSortDescriptor(key: "name", ascending: false)
let sortDescriptors = [sortDescriptor]
fetchRequest.sortDescriptors = [sortDescriptor]
let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: nil, cacheName: nil)
aFetchedResultsController.delegate = self
_fetchedResultsController = aFetchedResultsController
var error: NSError? = nil
if !_fetchedResultsController!.performFetch(&error) {
abort()
}
return _fetchedResultsController!
}
var _fetchedResultsController: NSFetchedResultsController? = nil
func insertNewObject(sender: AnyObject) { //this works
let context = self.fetchedResultsController.managedObjectContext
let entity = self.fetchedResultsController.fetchRequest.entity!
let newManagedObject = NSEntityDescription.insertNewObjectForEntityForName(entity.name!, inManagedObjectContext: context) as Section
newManagedObject.name = String("insert")
var error: NSError? = nil
if !context.save(&error) {
abort()
}
}
func configureCell(cell: UITableViewCell, atIndexPath indexPath: NSIndexPath) {
let section = self.fetchedResultsController.objectAtIndexPath(indexPath) as Section
cell.textLabel.text = section.name;//this works
}
你试过使用僵尸来确定崩溃的原因吗?我刚刚发现了僵尸,我启用了它,但是当bugg出现时,它并没有改变xcode中的窗口,我应该去某个地方看看僵尸说了什么吗?我试图删除强制转换
prepareForSegue
并让NSManagedObject,但println中的对象仍然是空的,仍然是相同的崩溃。