Ger*_*tan 0 core-data swift xcode7
运行以下代码将在返回行中中止
Type is not Workout
Could not cast value of type
'NSManagedObject_Workout_' (0x7fcca20620f0) to
'AppName.Workout' (0x100ea5f40)).
Run Code Online (Sandbox Code Playgroud)
如果让...内部的部分永远不会执行.
func createWorkoutWithName (name: String) -> Workout? {
let entityName = NSStringFromClass(Workout.classForCoder())
let newEntity = NSEntityDescription.insertNewObjectForEntityForName(entityName, inManagedObjectContext: managedObjectContext)
if let newEntity = newEntity as? Workout {
newEntity.name = name
}
NSLog("createWorkoutWithName: Type is not Workout")
return (newEntity as! Workout)
}
Run Code Online (Sandbox Code Playgroud)
我过去遇到过这个问题,我通过进入实体检查器并设置Class = AppName.Workout,在XCode 6.x中解决了这个问题.
建议这个解决方案的几个答案之一是 我怎么可以转换为NSManagedObject而不是我的实体的类型?
XCode 7为这个问题增添了新的变化:当我设置时
Class = AppName.Workout
Run Code Online (Sandbox Code Playgroud)
在实体检查器中,XCode 7自动将类名更改为
Class = AppNameWorkout
Run Code Online (Sandbox Code Playgroud)
通过删除AppName和ClassName之间的点.
那么当我无法在AppName和ClassName之间设置点时,如何在XCode 7中执行此操作?
小智 5
转到你宣布实体的地方的cdatamodel ..实体下面有一个默认配置.检查您的实体的Class列.默认情况下,这将有一个前缀点.删除点前缀.它应该工作.从我看到的是你不必在Xcode 7中为你的实体类名称加上模块名称.因此你不能在类名中使用点.我是iOS开发中的新手.所以我可能不完全正确.但删除点前缀解决了我在Xcode 7中的问题.
| 归档时间: |
|
| 查看次数: |
1253 次 |
| 最近记录: |