Swift CoreData:error:无法调用NSManagedObject类的指定初始化器'NSManagedObject' [英] Swift CoreData: error: Failed to call designated initializer on NSManagedObject class 'NSManagedObject'

查看:362
本文介绍了Swift CoreData:error:无法调用NSManagedObject类的指定初始化器'NSManagedObject'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm using core data to save a category in vc1 and want to add list properties to a list in vc2. My data model is one category to many list properties.

我在vc1中添加如下类别:

I'm adding the category like this in 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' 

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

The managed object is in the array if I put a break point and print the array. What's wrong?

推荐答案

专用初始化程序为

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

显然,你没有插入一个新的对象,所以你真的想要一个可选的值。也许你已经将你的类变量 managedObject 声明为 NSManagedObject!?尝试将其设置为 NSManagedObject?,并将运算符更改为 as?

Clearly, you are not inserting a new object, so you really want an optional value. Maybe you declared your class variable managedObject as NSManagedObject!? Try setting it to NSManagedObject? and also change the operator to as?.

这篇关于Swift CoreData:error:无法调用NSManagedObject类的指定初始化器'NSManagedObject'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆