我正在一个新项目中使用Swift样板代码来获取核心数据.My .xcdatamodeld
文件使用单个属性(name
)定义了单个实体(Task
).
我有一个Task.swift
文件,看起来像这样:
import CoreData
class Task: NSManagedObject {
@NSManaged var name: String
}
当我运行这个程序时,它会起作用:
var firstTask = NSEntityDescription.insertNewObjectForEntityForName("Task",
inManagedObjectContext: managedObjectContext) as NSManagedObject
firstTask.setPrimitiveValue("File my TPS reports", forKey: "name")
var error: NSError?
managedObjectContext.save(&error)
我甚至可以进入iOS模拟器正在使用的SQLite数据库,确认添加了行.
然而,当我运行与上面完全相同的代码,但使用as Task
而不是as NSManagedObject
时,我得到一个错误消息Thread 1: EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)
,与var firstTask
…行关联.如果我继续执行,每次我推进线程1时,线程1的顶部会得到EXC_BAD_ACCESS
和0 misaligned_stack_error_
.
为什么这个演员会导致这一切?