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 在无限循环中保存结束