AppDelegate 类型的值没有成员 managedObjectContext
Posted
技术标签:
【中文标题】AppDelegate 类型的值没有成员 managedObjectContext【英文标题】:value of type AppDelegate has no member managedObjectContext 【发布时间】:2017-05-17 12:33:57 【问题描述】:代码
let managedObjectContext =
(UIApplication.sharedApplication.delegate
as! AppDelegate).managedObjectContext
错误:
AppDelegate
类型的值没有成员 managedObjectContext
,
我的问题是我想在 Xcode 8 中使用 managedObjectContext
,但它说 AppDelegate
没有这样的成员。我想使用它,因为我想用核心数据为 ios 9 创建一个项目。
我要managedObjectContext
的定义,有的话请留言
【问题讨论】:
当您创建项目时,您检查过use core data
吗?还是未选中?
我觉得你需要参考http://***.com/questions/2032818/adding-core-data-to-existing-iphone-project
是的,我检查过了,问题是我正在为 ios 9 创建一个项目,而 xcode 8 正在创建 appdelegate 文件,其核心数据与 ios 10 兼容。
增加了persistentContainer: NSPersistentContainer 与ios 9不兼容
有一个关于 SO 的答案,其中包括旧式 Core Data 访问的类源,但已转换为 Swift 3:***.com/questions/38120937/…
【参考方案1】:
说明:
错误很清楚,它指出AppDelegate
没有名为managedObjectContext
的属性。检查AppDelegate
并查看名称为managedObjectContext
的属性是否存在。
参考:
在编写代码之前了解以下内容非常重要:
概念 - https://developer.apple.com/library/content/documentation/DataManagement/Devpedia-CoreData/coreDataOverview.html#//apple_ref/doc/uid/TP40010398-CH28-SW1
分步指南 - https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/index.html#//apple_ref/doc/uid/TP40001075-CH2-SW1
【讨论】:
我理解错误,但我想要现在找到的 managedObjectContext 的定义。 参考第1个链接,虽然读起来比较费时,但会帮助你理解清楚。 ManagedObjectContext 就像一个便笺簿,您可以在其中进行更改。稍后您可以保存上下文。【参考方案2】:您只需要创建一个勾选“使用核心数据”的项目,它就会在您项目的应用程序委托中可用。image of project creation and selection of use core data tick mark
lazy var persistentContainer: NSPersistentContainer =
/*
The persistent container for the application. This implementation
creates and returns a container, having loaded the store for the
application to it. This property is optional since there are legitimate
error conditions that could cause the creation of the store to fail.
*/
let container = NSPersistentContainer(name: "temp")
container.loadPersistentStores(completionHandler: (storeDescription, error) in
if let error = error as NSError?
// Replace this implementation with code to handle the error appropriately.
// fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
/*
Typical reasons for an error here include:
* The parent directory does not exist, cannot be created, or disallows writing.
* The persistent store is not accessible, due to permissions or data protection when the device is locked.
* The device is out of space.
* The store could not be migrated to the current model version.
Check the error message to determine what the actual problem was.
*/
fatalError("Unresolved error \(error), \(error.userInfo)")
)
return container
()
在应用委托中使用
let context = persistentContainer.viewContext
【讨论】:
问题是,“我想为 ios 9 创建一个项目”。您是否在 iOS 9 上尝试过您的解决方案? 是的,我想为 ios 9 创建项目,所以我想要检查核心数据的“appdelegate.swift”文件。如果有人有 ios 9 的文件,请参考。 菲利普米尔斯你能帮忙吗,谢谢 @VikrantSingh - 您的问题的 cmets 中有一个链接指向另一个问题,该问题有我能给您的最佳答案。以上是关于AppDelegate 类型的值没有成员 managedObjectContext的主要内容,如果未能解决你的问题,请参考以下文章
“AppDelegate”类型的值没有成员“manageObjectContext”
Swift:实现快捷方式项目(3D 触摸)共享项目错误“AppDelegate 类型的值没有当前成员”
“FileManager”类型的值没有成员“urlsForDirectory”-AppDelegate Swift 3 错误
“AppDelegate”类型的IOS开发值没有成员“managedObjectContext”Xcode 10