Core data 分配给类变量时核心数据崩溃

Core data 分配给类变量时核心数据崩溃,core-data,Core Data,我试图将托管对象的值保存在创建它的函数之外,以便在其他地方使用它。(例如,我正在保存经理实体,以便在创建员工实体时,可以将其指向employeeManager关系中保存的经理实体。) 我的班级大致如下: class Company { var newManager = Manager() func addEmployee() { let appDelegate = UIApplication.sharedApplication().delegate as! AppDeleg

我试图将托管对象的值保存在创建它的函数之外,以便在其他地方使用它。(例如,我正在保存经理实体,以便在创建员工实体时,可以将其指向employeeManager关系中保存的经理实体。)

我的班级大致如下:

class Company {

  var newManager = Manager()

  func addEmployee() { 
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let managedContext = appDelegate.managedObjectContext!
    let entity = NSEntityDescription.entityForName("Manager", inManagedObjectContext: managedContext)
    let manager = NSManagedObject(entity: entity!, insertIntoManagedObjectContext:managedContext) as! Manager      
    manager.name = name
    newManager = manager  // Crashes here EXC_BAD_ACCESS (code=1, address=0x38)
  }
}
使用调试器,我可以看到变量newManager被正确地分配给point to manager。我尝试将manager更改为var,也跳过了manager,并直接从NSManagedObject()将其赋值给newManager,但每当我尝试将值赋值给类变量时,应用程序就会崩溃


你知道这是什么原因吗?我不应该把这些东西分配给类级变量吗?

这样分配一个值是可以的。我怀疑问题在于您这样声明了
newManager

var newManager = Manager()
使用
Manager()
意味着这将创建
Manager
的新实例。但由于它是托管对象,因此无法正确初始化它。我猜问题不在于稍后为
newManager
分配新值,而是必须处理旧的、伪造的版本。由于它已经无效,内存管理出现问题

如果要保留此引用,应将
newManager
声明为

var newManager : Manager?
这不会立即创建实例。这意味着
newManager
现在是可选的,因此您必须进行其他代码更改来处理该问题