gpt4 book ai didi

macos - insertNewObjectForEntityForName 找不到实体 (Swift)

转载 作者:行者123 更新时间:2023-11-28 11:23:51 27 4
gpt4 key购买 nike

我正在尝试将一个可用的 CoreData 应用程序移植到 Swift。此代码失败:

    let moc = self.context
NSLog("Entities: \(moc.persistentStoreCoordinator.managedObjectModel.entitiesByName.allKeys)")
let obj = NSEntityDescription.insertNewObjectForEntityForName("School",
inManagedObjectContext:moc)

NSLog 输出是这样的:

2014-06-11 11:23:51.634 WYBData[18480:303] Entities [Address, Contact, Hospital, Person, Place, School]

因此,即使日志显示有一个名为 School 的实体,我认为这意味着 NSManagedObjectContext 已正确设置,我仍然会收到此错误:

2014-06-11 11:23:55.338 WYBData[18480:303] +entityForName: could not locate an entity named 'School' in this model.
2014-06-11 11:23:55.340 WYBData[18480:303] (
0 CoreFoundation 0x00007fff8c05725c __exceptionPreprocess + 172
1 libobjc.A.dylib 0x00007fff8f274e75 objc_exception_throw + 43
2 CoreData 0x00007fff89b20a19 +[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:] + 201
3 WYBData 0x00000001000171f3 _TFC7WYBData12WYBXmlParser7executefS0_FRGSqCSo7NSError_Sb + 2403
4 WYBData 0x000000010000ea4a _TFC7WYBData11WYBMainView2gofS0_FPSs9AnyObject_T_ + 1642
5 WYBData 0x000000010000ead2 _TToFC7WYBData11WYBMainView2gofS0_FPSs9AnyObject_T_ + 66
6 AppKit 0x00007fff91d97260 -[NSApplication sendAction:to:from:] + 327
7 AppKit 0x00007fff91d970de -[NSControl sendAction:to:] + 86
8 AppKit 0x00007fff91de3c4d -[NSCell _sendActionFrom:] + 128
9 AppKit 0x00007fff91dfd655 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2316
10 AppKit 0x00007fff91dfca27 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 487
11 AppKit 0x00007fff91dfc13d -[NSControl mouseDown:] + 706
12 AppKit 0x00007fff91d7da58 -[NSWindow sendEvent:] + 11296
13 AppKit 0x00007fff91d1c5d4 -[NSApplication sendEvent:] + 2021
14 AppKit 0x00007fff91b6ca19 -[NSApplication run] + 646
15 AppKit 0x00007fff91b577a3 NSApplicationMain + 940
16 WYBData 0x000000010000a9ed top_level_code + 109
17 WYBData 0x000000010000aa2a main + 42
18 libdyld.dylib 0x00007fff8bf085fd start + 1
19 ??? 0x0000000000000003 0x0 + 3
)

我可以正确创建一个 Address 实体,但不能创建其他实体。即使这很奇怪,因为 AddressContact 的子实体,但尝试创建 Contact 会导致上述相同的错误。

我错过了什么?

编辑:

我暂时从我的 Core Data 模型中删除了 Address,现在可以创建 Contact,但不能创建其他任何东西。所以看来我只能创建模型中定义的第一个实体(按字母顺序)。这听起来像是一个错误,还是我的 NSManagedObjectModel 以某种方式损坏了?

最佳答案

对于遇到同样问题的任何其他人:问题出在我的 .xcdatamodeld 文件上。它一定是以某种方式损坏的,因为我创建了一个新文件并完全重新创建了我的数据模型,现在它可以工作了。我看不出这两个文件有任何区别(至少在 Xcode Core Data 模型编辑器中)。

我的数据模型在 iOS 和 OS-X 项目之间共享(OS-X 应用程序为 iOS 应用程序准备数据)。我想知道与 OS-X 相比,为 iOS 创建的 .xcdatamodeld 文件是否有任何差异。

关于macos - insertNewObjectForEntityForName 找不到实体 (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24160619/

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