NSManagedObjectContext 在 Swift 中不起作用

Posted

技术标签:

【中文标题】NSManagedObjectContext 在 Swift 中不起作用【英文标题】:NSManagedObjectContext does not work in Swift 【发布时间】:2014-09-14 04:18:39 【问题描述】:
@IBAction func btnSave(sender: AnyObject) 

    let appDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    let context: NSManagedObjectContext = appDel.managedObjectContext    

这不起作用,因为它说它没有打开。

【问题讨论】:

这不是 Xcode 问题。 【参考方案1】:

因为应用程序委托中的managedObjectContext 是可选的,您应该使用感叹号将其解包,将您的代码更改为:

let context: NSManagedObjectContext = appDel.managedObjectContext!

【讨论】:

致命错误:在展开可选值时意外发现 nil【参考方案2】:

您需要打开它,然后以安全的方式继续使用这样的 if 语句。

@IBAction func btnSave(sender: AnyObject) 
    if let context:NSManagedObjectContext = appDel.managedObjectContext! as NSManagedObjectContext 
        // safe to use the context here
        

【讨论】:

【参考方案3】:

你在 AppDelegate madelURL 中改变了吗?

lazy var managedObjectModel: NSManagedObjectModel = 
    let modelURL = NSBundle.mainBundle().URLForResource("**YOURPROJECTNAME**", withExtension: "momd")!
    return NSManagedObjectModel(contentsOfURL: modelURL)!
()

【讨论】:

以上是关于NSManagedObjectContext 在 Swift 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 2 个 NSManagedObjectContext 之间复制对象

私有队列 NSManagedObjectContext 在无限循环中保存结束

父/子 NSManagedObjectContext 不起作用

在后台保存 NSManagedObjectContext

声明 NSManagedObjectContext 时出错

如何清除 NSManagedObjectContext 中的所有对象?