“AppDelegate”类型的IOS开发值没有成员“managedObjectContext”Xcode 10
Posted
技术标签:
【中文标题】“AppDelegate”类型的IOS开发值没有成员“managedObjectContext”Xcode 10【英文标题】:IOS Dev Value of type 'AppDelegate' has no member 'managedObjectContext' Xcode 10 【发布时间】:2019-10-04 16:24:22 【问题描述】:我正在关注 Udemy 教程 Link。这是我第一次使用 Core Data。这就是他们所拥有的:
let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
这就是我所拥有的:
let context = (UIApplication.shared.delegate as! AppDelegate).managedObjectContext
我收到此错误:
“AppDelegate”类型的值没有成员“managedObjectContext”
谁能指出我正确的方向,以了解这是语法问题还是我没有创建某些东西。
【问题讨论】:
您确定在创建项目时选择了 Core Data 吗? AppDelegate 中是否存在 Core Data 堆栈?创建新项目时,您必须检查Use Core Data
以获取核心数据堆栈。
How to create managedObjectContext using Swift 3 in Xcode 8?的可能重复
是的,我有 2 个文件 Item+CoreDataClass.swift & Item+CoreDataProperties.swift。
【参考方案1】:
如果您在设置项目时选中/勾选了“使用核心数据”,您的AppDelegate
文件中应该有一个“预安装的”核心数据“堆栈”,类似于 Apple 文档中描述的内容标题为“Core Data Stack”。
您的AppDelegate
应包含与标题为“Setting Up a Core Data Stack”的 Apple 文档中详细说明的代码类似的代码,位于“初始化持久容器”的小标题下。
它很可能不包括managedObjectContext
的属性。该错误解释了这一点。
我的猜测是您需要在您的AppDelegate
文件中为managedObjectContext
添加一个属性,类似于此...
LINE 1
var managedObjectContext: NSManagedObjectContext!
(请注意,我已将此属性设为显式解包的可选 !
。)
然后在您返回 NSPersistentContainer
时进行设置。
LINE 2
self.managedObjectContext = container.viewContext
这些行如下图放置...
class AppDelegate: UIResponder, UIApplicationDelegate
...
var managedObjectContext: NSManagedObjectContext! //LINE 1
lazy var persistentContainer: NSPersistentContainer =
let container = NSPersistentContainer(name: "DataModel")
container.loadPersistentStores description, error in
if let error = error
fatalError("Unable to load persistent stores: \(error)")
self.managedObjectContext = container.viewContext //LINE 2
return container
()
...
【讨论】:
以上是关于“AppDelegate”类型的IOS开发值没有成员“managedObjectContext”Xcode 10的主要内容,如果未能解决你的问题,请参考以下文章
AppDelegate 类型的值没有成员 managedObjectContext
Swift:实现快捷方式项目(3D 触摸)共享项目错误“AppDelegate 类型的值没有当前成员”
“FileManager”类型的值没有成员“urlsForDirectory”-AppDelegate Swift 3 错误