3
我有一个相当奇怪的情况,在使用Swift进行实验时发生核心数据错误。我不确定它是否来自Swift(测试版错误?)或者它是否是我。不过,这里是我的测试用例的设置(在VTModelTests.swift中)。insertNewObjectForEntityForName的奇怪行为导致NSInternalInconsistencyException
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."
总之,我可以“证明”该实体名称是存在的(即“耶”在日志),但核心数据显示名称不在模型中的问题。循环的先前版本打印出实体,看起来不错。我没有任何第二个版本,并且在打印所有实体时,模型数据中正确显示了一个新的更改名称('Model'现在称为'Drawing')。编译后的模型位于结果包中。
有人可以解释一下吗?还是必须等待Xcode 6的下一个beta版?我还忽略了什么?提前谢谢了!