Swift:IOS7设备上的核心数据 - >第二个实体上的entityForName是nil

use*_*019 4 iphone core-data ios ios7 swift


我使用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)
Run Code Online (Sandbox Code Playgroud)

错误:由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'+ entityForName:无法在此模型中找到名为'Contract'的实体.

bab*_*ich 13

它现在似乎是一个bug.正如本文所述:https://devforums.apple.com/message/996259#996259.

此错误的解决方法是使用NSString而不是传递String作为实体名称:

    let myEntity: NSString = "EntityName"
    var fetchRequest = NSFetchRequest(entityName: myEntity)
Run Code Online (Sandbox Code Playgroud)