Segue 错误 - 未能在 nsmanagedobject 类上调用指定的初始化程序
Posted
技术标签:
【中文标题】Segue 错误 - 未能在 nsmanagedobject 类上调用指定的初始化程序【英文标题】:Segue error - failed to call designated initializer on nsmanagedobject class 【发布时间】:2015-06-24 06:43:55 【问题描述】:在 tableview 控制器 #1 中,我在 viewDidLoad 中初始化了一个 NSManagedObjects 数组(名为“Date”的实体)。 var datesArray = [Date]()
。我使用这个数组来填充表格数据。
当用户选择一个单元格时,我想通过索引路径将选定的Date
对象传递给视图控制器#2,一个详细信息视图。这就是我在prepareForSegue
中为 tableview 控制器 #1 提供的内容:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
let selectedIndexPath = tableView.indexPathForSelectedRow()
if segue.identifier == "ShowDateDetails"
let dateDetailsVC = segue.destinationViewController as! DateDetailsVC
dateDetailsVC.date = datesArray[selectedIndexPath!.row] as Date
在视图控制器 #2 中,我有一个简单的 var date = Date()
属性。
当我在表格视图中选择一行时,它在dateDetailsVC.date = datesArray[selectedIndexPath!.row] as Date
上崩溃并出现错误:
CoreData:错误:无法调用 NSManagedObject 类“DateAid.Date”上的指定初始化程序
谁能指导我找到解决方案,或者用半外行的术语解释为什么会发生这种情况的原因?我想避免在视图控制器 #2 中执行获取请求,除非那是不可能的。就上下文而言,我的核心数据技能目前是 1.5/5。
【问题讨论】:
你如何填充你的“datesArray”? 通过对传播的托管对象上下文的获取请求。由于我在视图控制器 #1 'datesArray' 中有所有日期,我希望不必在视图控制器 #2 中再次获取它们。 好的,你是如何在 dateDetailsVC 中声明日期的?我有一个想法.. var date = Date() 作为 dateDetailsVC 中的变量属性 【参考方案1】:看看这个答案
https://***.com/a/25505878/2382237
也许你应该像这样声明日期:
var date: Date?
还有一些重构:
dateDetailsVC.date = datesArray[selectedIndexPath!.row] as? Date
【讨论】:
以上是关于Segue 错误 - 未能在 nsmanagedobject 类上调用指定的初始化程序的主要内容,如果未能解决你的问题,请参考以下文章