gpt4 book ai didi

core-data - insertNewObjectForEntityForName 导致 NSInternalInconsistencyException 的奇怪行为

转载 作者:搜寻专家 更新时间:2023-10-31 22:09:13 37 4
gpt4 key购买 nike

我有一个相当奇怪的案例,在尝试使用 Swift 时出现核心数据错误。我不确定它是来自 Swift(测试版错误?)还是我。但是,这是我的测试用例的设置(在 VTModelTests.swift 中)。

var bundle = NSBundle(forClass: VTModelTests.self)
var url = bundle.URLForResource("VTDocument", withExtension:"momd")
appleModel = NSManagedObjectModel(contentsOfURL: url)
assert (appleModel != nil)
var coord = NSPersistentStoreCoordinator(managedObjectModel: appleModel);
var store = coord.addPersistentStoreWithType(NSInMemoryStoreType,configuration:nil,URL:nil,options:nil,error:nil);
assert (store != nil)
ctx = NSManagedObjectContext();
ctx!.persistentStoreCoordinator=coord
ctx!.retainsRegisteredObjects=true;

var drwName = "Drawing"
var descs = ctx!.persistentStoreCoordinator.managedObjectModel.entitiesByName
for e : AnyObject in descs.allKeys{
assert (descs.objectForKey(e).name == e as String )
if (e as String == drwName) {
NSLog("yeah")
}
}
model = NSEntityDescription.insertNewObjectForEntityForName(drwName,inManagedObjectContext: ctx) as Drawing

我的错误信息是这样的:

2014-06-22 22:12:25.584 xctest[63792:303] yeah
<unknown>:0: error: -[_TtC12VTModelTests12BaseTypeTest testTreeStructure] : failed: caught "NSInternalInconsistencyException", "+entityForName: could not locate an entity named 'Drawing' in this model."

简而言之,我可以“证明”实体名称存在(日志中的"is"),但核心数据显示名称不在模型中的问题。以前版本的循环打印出实体,看起来不错。我没有任何第二个版本,并且在打印所有实体时,新的更改名称(“模型”现在称为“绘图”)正确显示在模型数据中。编译后的模型在生成的包中。

谁能解释一下?还是我必须等待 Xcode 6 的下一个测试版?我还忽略了什么?非常感谢!

最佳答案

我可以确认这个问题。不是答案,但我使用的方法是将 insertNewObjectForEntityForName 拆分为:

let entity = NSEntityDescription.entityForName("Photo", inManagedObjectContext:context)
let photo = Photo(entity:entity, insertIntoManagedObjectContext:context)

关于core-data - insertNewObjectForEntityForName 导致 NSInternalInconsistencyException 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24355494/

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