“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

错误:“AppDelegate?”类型的值没有成员“在场”

Swift:实现快捷方式项目(3D 触摸)共享项目错误“AppDelegate 类型的值没有当前成员”

“FileManager”类型的值没有成员“urlsForDirectory”-AppDelegate Swift 3 错误

ios开发 怎么将bool值放入字典

AppDelegate.swift 中没有这样的模块“电容器”