当前位置: 首页 > 面试题库 >

Swift CoreData:错误:无法在NSManagedObject类'NSManagedObject'上调用指定的初始化程序

蒋浩
2023-03-14
问题内容

我正在使用核心数据在vc1中保存类别,并希望将列表属性添加到vc2中的列表中。我的数据模型是许多列表属性的一类。

我在vc1中添加了这样的类别:

func createNewCategory() {
    var category: NSManagedObject! = NSEntityDescription.insertNewObjectForEntityForName("Category", inManagedObjectContext: self.context) as NSManagedObject
    category.setValue(self.categoryTextField.text, forKey: "name")

    var error: NSError? = nil
    self.context.save(&error)
}

在vc2中设置数据:

func setupCoreData() {
    var appDelegate: AppDelegate = (UIApplication.sharedApplication()).delegate as AppDelegate
    self.context = appDelegate.managedObjectContext!

    var request: NSFetchRequest = NSFetchRequest(entityName: "Category")
    if (self.context.executeFetchRequest(request, error: nil)) {
        var error: NSError? = nil
        self.listData = self.context.executeFetchRequest(request, error: &error)
        self.managedObject = self.listData.objectAtIndex(0) as NSManagedObject
    }
}

它在最后一行崩溃:self.managedObject = ...说:

CoreData: error: Failed to call designated initializer on NSManagedObject class 'NSManagedObject'

如果放置断点并打印数组,则托管对象在数组中。怎么了?


问题答案:

专用的初始化程序是

class func insertNewObjectForEntityForName(_ entityName: String!,
   inManagedObjectContext context: NSManagedObjectContext!) -> AnyObject!

显然,您不是要插入新对象,因此确实需要一个可选值。也许您将类变量声明managedObjectNSManagedObject!?尝试将其设置为NSManagedObject?,也将运算符更改为as?



 类似资料:
  • 我的玻璃鱼在我尝试跑步时抛出一个异常。 [2018-02-22T17:07:04.135 0100][glassfish 5.0][Severy][javax.enterprise.system.core][tid:_ThreadID=46 _ThreadName=admin listener(4)][timeMillis:1519315624135][levelValue:1000][加载应用时

  • 我正在尝试从谷歌应用引擎操作我的Firebase数据库。遵循教程后,我收到以下错误 - java.lang.NoClassDefFoundError:无法初始化类com.google.firebase.internal.FirebaseThreadManagers 有时我会看到以下内容: 该错误发生在Firebase选项中,如下面的代码所示。 这是完整的错误 com.google.appengin

  • 问题内容: 当我运行项目时,会收到此错误的大量输出: 我注意到此问题的出现方式是在整个网络上被询问,但没有真正的答案。这种错误的一般原因是什么? 问题答案: NoClassDefFound错误是一个模糊的错误,通常隐藏着更严重的问题。它是不一样的ClassNotFoundException(被抛出时,该类只是普通的不存在)。 如javadocs所示,NoClassDefFound 可能指示该类不存

  • 问题内容: 这段代码适用于第一个XCode 6 Beta,但在最新的Beta中,它不起作用,并显示以下错误 : 这就是此类的初始化方式: 我坚持下去..最简单的解决方法是什么? 问题答案: 是SKSpriteNode类中唯一指定的初始值设定项,其余都是方便的初始值设定项,因此您不能在它们上调用super。将代码更改为此: 此外,我会将所有这些整合到一个初始化器中。

  • 我需要在Gradle中查看我的依赖项,以修复多个SLF4J绑定的问题。 但是,当我运行“Gradle依赖项”时,我得到错误: 无法初始化类org.codehaus.groovy.runtime.InvokerHelper 在堆栈溢出的类似问题中,Android Studio无法初始化类org.codehaus.groovy.runtime.InvokerHelper 建议 安装Java jdk-1

  • 问题内容: 我正在使用Core Data开发应用程序。当我 使用以下方法创建实例时: 我在日志中收到警告: 我该如何解决? 还有另一个问题,如何在NSManagedObject 子类中定义实例方法? 问题答案: Xcode 7的更新(最终):不再需要在类之前添加模块名称(如Xcode6和Xcode7的早期beta版本一样)。Apple文档“ 实现核心数据托管对象子类”已相应更新。 数据模型检查器现