Swift + Xcode 6 beta 3 + Core Data = awakeFromInsert没有调用?

时间:2014-07-09 02:38:24

标签: xcode core-data swift

需要帮助。

我正在创建新的基于文档的Core Data Cocoa项目。 将名为“Entity”的实体添加到核心数据模型中。在其中添加'creationDate'属性并将其类型设置为Date。并从“编辑器”菜单中创建NSManagedObject子类。

现在我将'Entity.swift'文件添加到此代码中:

override func awakeFromInsert()  {
    super.awakeFromInsert()
    self.creationDate = NSDate()
    println("awakeFromInsert called")
}

现在在我的NSPersistentDocument子类中,我编写了一个init()方法:

init() {
    super.init()

    var context = self.managedObjectContext
    context.undoManager.disableUndoRegistration()
    var entity = NSEntityDescription.insertNewObjectForEntityForName("Entity", inManagedObjectContext: context)
    context.processPendingChanges()
    context.undoManager.enableUndoRegistration()

    println("\(entity)")
}

一切都在编译......但是awakeFromInsert永远不会被调用!有趣的是,'实体'对象不是零!它已创建,但尚未初始化。如果我在init方法中写这行

entity.creationDate = NSDate()

然后creationDate属性将按预期设置为当前日期。

但这不是全部。如果我逐步调试执行,我可以看到执行进入'Entity.swift'文件,但从文件顶部开始,然后立即删除并返回NSPersistentDocument子类文件。

告诉我,这是一个错误吗?因为我厌倦了与这种废话斗争。感谢。

1 个答案:

答案 0 :(得分:0)

无意中我得到了它:你必须在子类声明之前添加@objc(YourSubclass)。我经常做@objc类MySubclass并且证明它不起作用(不知道为什么)。

WORKING:

@objc(YourSubclass)
class YourSubclass : NSManagedObject {
...

不工作:

@objc class YourSubclass : NSManagedObject {
...