gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 09:20:58 25 4
gpt4 key购买 nike

需要帮助。

我正在创建新的基于文档的 Core Data Cocoa 项目。将名为“实体”的实体添加到核心数据模型中。将“creationDate”属性添加到其中并将其类型设置为日期。并从“编辑器”菜单创建 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 子类文件。

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

最佳答案

不小心我得到了它的工作:你必须在子类声明之前添加@objc(YourSubclass)。我通常执行@objc class MySubclass,结果发现它不起作用(不知道为什么)。

工作:

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

不工作:

@objc class YourSubclass : NSManagedObject {
...

关于xcode - Swift + Xcode 6 beta 3 + Core Data = awakeFromInsert 没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24644569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com