无法创建对象 - 简单的核心数据应用程序

Posted

技术标签:

【中文标题】无法创建对象 - 简单的核心数据应用程序【英文标题】:Failed to Create Object - Simple Core Data App 【发布时间】:2014-12-21 19:31:15 【问题描述】:

我刚刚尝试创建一个简单的核心数据应用程序,但出现了错误。我正在使用 Xcode 6.1 和 swift。我之前已经快速完成了这项工作并且没有任何问题,所以我对我错过或忘记的内容感到困惑。我在 GitHub 上有项目here

错误代码在底部。在查看 Apple 的文档 here 时,Apple 表示:

原因:在您的托管对象模型中,您可能已经为实体指定了一个自定义类,但您还没有实现该类。

解决方法:实现自定义类,或者指定实体由 NSManagedObject 表示。

我已将模型中的子类添加到项目中。

任何人都有这个问题,可以指出正确的方向吗?

2014-12-21 14:20:25.983 CoreDataNoStoryBoard[72437:7539866] Failed to create new object
2014-12-21 14:20:25.984 CoreDataNoStoryBoard[72437:7539866] (
0   CoreFoundation                      0x00007fff9270c64c __exceptionPreprocess + 172
1   libobjc.A.dylib                     0x00007fff8bb356de objc_exception_throw + 43
2   CoreFoundation                      0x00007fff9270c42a +[NSException raise:format:arguments:] + 106
3   AppKit                              0x00007fff98329507 _NSSendCommitEditingSelector + 267
4   AppKit                              0x00007fff97fcd2bf -[NSController _controllerEditor:didCommit:contextInfo:] + 185
5   CoreFoundation                      0x00007fff925e533c __invoking___ + 140
6   CoreFoundation                      0x00007fff925e5192 -[NSInvocation invoke] + 290
7   CoreFoundation                      0x00007fff92683e56 -[NSInvocation invokeWithTarget:] + 54
8   Foundation                          0x00007fff9399eabb __NSFireDelayedPerform + 364
9   CoreFoundation                      0x00007fff9265fb44 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
10  CoreFoundation                      0x00007fff9265f7d3 __CFRunLoopDoTimer + 1059
11  CoreFoundation                      0x00007fff926d2d9d __CFRunLoopDoTimers + 301
12  CoreFoundation                      0x00007fff9261c268 __CFRunLoopRun + 2024
13  CoreFoundation                      0x00007fff9261b838 CFRunLoopRunSpecific + 296
14  HIToolbox                           0x00007fff8cc3643f RunCurrentEventLoopInMode + 235
15  HIToolbox                           0x00007fff8cc360be ReceiveNextEventCommon + 179
16  HIToolbox                           0x00007fff8cc35ffb _BlockUntilNextEventMatchingListInModeWithFilter + 71
17  AppKit                              0x00007fff97bd86d1 _DPSNextEvent + 964
18  AppKit                              0x00007fff97bd7e80 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 194
19  AppKit                              0x00007fff97bcbe23 -[NSApplication run] + 594
20  AppKit                              0x00007fff97bb72d4 NSApplicationMain + 1832
21  CoreDataNoStoryBoard                0x00000001000059b2 top_level_code + 34
22  CoreDataNoStoryBoard                0x00000001000059ea main + 42
23  libdyld.dylib                       0x00007fff97a805c9 start + 1
24  ???                                 0x0000000000000003 0x0 + 3
)

【问题讨论】:

请在问题本身中包含相关代码(发生错误的地方)。 【参考方案1】:

根据NSManagedObject Subclass Documentation“Swift 类是命名空间的——它们的作用域是编译它们的模块(通常是项目)。要将 NSManagedObject 类的 Swift 子类与您的 Core Data 模型一起使用,请在模型实体检查器的 Class 字段中的类名称与您的模块名称。"

将您的应用名称添加到您的实体类中,如下所示:

【讨论】:

问题中没有足够的信息,但这对我来说似乎是一个不同的问题。未能将模块名称添加到 Core Data 类将导致 “CoreData:警告:无法加载名为 ... 的类,使用默认的 NSManagedObject 来代替。”,如 ***.com/questions/25076276/… . 这就是我的想法,但是在 GitHub 项目中实现这一点后,它修复了错误。不过,也许还有另一个潜在的问题。 是的,这解决了这个问题。回顾我的旧项目,我的实体名称没有添加,但仍然可以继续运行。 在核心数据建模器中设置模型名称也为我解决了这个问题。这种东西真让人生气。

以上是关于无法创建对象 - 简单的核心数据应用程序的主要内容,如果未能解决你的问题,请参考以下文章

简单的核心数据应用程序无法读取核心数据模型键

核心数据:对象操作(良好实践)

无法在具有 MagicalRecord [核心数据] 的实体中分配给 ...

核心数据——高效地查找或创建

iOS - 核心数据 - 保存包含对象数组的对象

使用 AFNetworking 无法正确处理并使用 ObjectivRecord(核心数据)创建/更新