我有一個AEUser類,它是NSManagedObject的子類。該類有一個創建自己的新實例的方法。對於默認目標,正常路線運行良好:CoreData的insertNewObjectForEntityForName將轉換爲自定義類失敗,並進行單元測試
static func newDefaultUser(moc: NSManagedObjectContext) -> AEUser {
let newUser = NSEntityDescription.insertNewObjectForEntityForName("AEUser", inManagedObjectContext: moc) as! AEUser
newUser.uid = sDefaultUser // some string constant
newUser.name = sDefaultUser // some string constant
return newUser
}
但是,執行使用相同的函數來創建一個新用戶XCTestCase時,在運行時出現錯誤鑄件。我可以突然不再將新物體投射到AEUser中。在默認目標上,一切正常,但。
現在有趣的是,上述代碼的「更長」變體對於測試用例來說完美無缺。現在演員當然不再需要了。但是上面的代碼應該產生完全相同的對象。另外,當使用斷點並查看分配給上面newUser的實際對象時,它看起來應該是AEUser對象。
private static func newDefaultUser(moc: NSManagedObjectContext) -> AEUser {
let entity = NSEntityDescription.entityForName("AEUser", inManagedObjectContext: moc)
let newUser = AEUser(entity: entity!, insertIntoManagedObjectContext: moc)
newUser.uid = sDefaultUser // some string constant
newUser.name = sDefaultUser // some string constant
return newUser
}
有人可以解釋爲什麼上面的代碼不工作使用XCTestCase /單獨的測試目標,具體爲什麼運行時鑄造儘管上面的代碼似乎產生適當的類型的對象一樣的第二個出現故障時變種?
(運行Xcode 6.3.2和iOS 8.3 SDK。)
我使用xCode 7,我不能重命名類Somersault.Team Xcode刪除期間,所以它說SomersaultTeam? – alex