【发布时间】:2015-08-17 17:40:25
【问题描述】:
我有三个控制器,一个用于显示所有数据,第二个用于查看已删除项目,第三个用于编辑。除了删除NSManagedObject之外,一切正常,目前该应用程序因错误而崩溃;
无法识别的选择器发送到实例 0x7f945b56a680 2015-08-17 18:35:08.835 AppTest [8008:435289] ***由于未捕获而终止应用程序 异常“NSInvalidArgumentException”,原因: '-[NSManagedObjectContext delete:]: 无法识别的选择器发送到 instance ... 以 NSException 类型的未捕获异常终止 (lldb)
为什么会发生此错误,我如何删除 NSManagedObject 中的 UINavigationController 和 popToRootController 以转回 collection view ?
这是我在editViewController 中一直在尝试做的事情;
let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
@IBAction func remove(sender: AnyObject) {
context?.delete(self.selectedObject)
var error: NSError?
context?.save(&error)
self.navigationController?.popToRootViewControllerAnimated(true)
}
更新:我使用popToRootViewController方法没有问题,但使用应该是deleteObject()的删除方法。现在我知道我看到的问题有很多问题。
【问题讨论】:
-
我想知道这是否可以编译。 NSManagedObjectContext 没有
delete()方法,只有deleteObject()。 -
实际上
delete方法是UIResponderStandardEditActions 协议的一部分,该协议被定义为NSObject上的一个类别(一个“非正式协议”)。这解释了代码编译的原因。