如何捕获核心数据'约束违反'Xcode8 / iOS10

时间:2016-12-17 15:58:29

标签: core-data xcode8 ios10

我有一个小代码集,可以捕获来自监控设备的数据消息。消息包含唯一的日期/时间字段(startDts)。我将这些与核心数据存储到sqlite数据库。我为startDts设置了一个约束。一切顺利,直到我收到一条我之前已经收到过startDts的消息 - 我在尝试保存时遇到'Contraint违规'。说得通。

我的问题是我似乎无法在代码中捕获它。相反,调试器只是在'try'行停止。

let we = WaterEvent(context: self.coreDataStack.context)
we.startDts = e.startTime as NSDate?
we.stopDts  = e.endTime as NSDate?

do {
    try self.coreDataStack.context.save()     // << Xcode breaks here on constraint violation
}
catch {
    let nserror = error as NSError
    print("CoreDataStack Unresolved error \(nserror), \(nserror.userInfo)")
    print("Constraint violation for: \(we.startDts)")  
}

所以'catch'代码块永远不会执行,即我无法真正智能地响应约束违规。

这是调试器输出的快照: enter image description here 前三行是我的代码第4行和第4行的打印语句。 5是调试器输出。

那是怎么回事? “约束违规”不是抛出异常吗?

0 个答案:

没有答案
相关问题