【发布时间】:2014-08-17 22:05:36
【问题描述】:
我已经使用 Xcode 6 beta 2 在一个小的 iPhone 项目上测试了 swift。
该项目使用核心数据访问数据模型中的 2 个实体(用户/合同)。在 IOS 模拟器内一切正常。
问题:当我为 IOS7 构建应用程序并在我的 iPhone5s(运行 IOS 7.1.1)上测试应用程序时,程序只能将数据保存到第一个实体(如核心数据模型 = 用户中所定义)。对于所有其他实体, NSEntityDescription.entityForName(...) 为“nil”。在 managedObjectModel (println(managedObjectModel)) 中包含所有实体。似乎数据模型不正确包含在 IOS7 上的 SQL 数据库中?!有人有解决方案/想法吗?谢谢:-)
var myAppDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
var myContext:NSManagedObjectContext = myAppDel.managedObjectContext
println(NSEntityDescription.entityForName("User", inManagedObjectContext: myContext))
println(NSEntityDescription.entityForName("Contract", inManagedObjectContext: myContext))
var newContract:AnyObject = NSEntityDescription.insertNewObjectForEntityForName("Contract", inManagedObjectContext: myContext)
newContract.setValue("" + txtContract.text, forKey: "contractName")
myContext.save(nil)
var newUser = NSEntityDescription.insertNewObjectForEntityForName("User", inManagedObjectContext: myContext)
newUser.setValue("" + txtUsername.text, forKey: "userName")
newUser.setValue("" + txtPassword.text, forKey: "userPass")
newUser.setValue(newContract, forKey: "contracts") // Save Relationship
myContext.save(nil)
错误: 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“+entityForName:无法在此模型中找到名为“Contract”的实体。”
【问题讨论】:
-
我遇到了同样的问题,最后放弃了。如果我重建足够多的时间,它最终会运行一两次,然后再次停止运行。如果您有一个小的孤立示例,我建议您在 bugreport.apple.com 上提交错误报告。不幸的是,我正在处理的示例在很多方面都非常令人费解,所以我放弃了它,因为另一种方式 swift 无论如何都不会为我当前的项目准备好黄金时间。
-
嗨,戴夫,感谢您的快速回复!我正在等待错误更正。也许我会在本周早些时候向苹果发送错误报告。
-
我想我也看到了这个问题。在 iOS 8 模拟器上一切正常,但在我的 iOS 7.1.2 iPhone 上运行时,我收到此错误:“NSFetchRequest 无法找到实体名称的 NSEntityDescription ...”。我正在使用 Xcode 6 Beta 4。我的上下文、模型和 storeCoorindator 对象看起来都很好——我可以看到我的模型对象包含所有正确的实体。我暂时放弃了;我会在下一个测试版中再试一次。
标签: ios iphone core-data ios7 swift