Я использую код шаблона Swift для Core Data в новом проекте. Мой файл .xcdatamodeld
имеет единый объект, определенный (Task
) с одним атрибутом (name
).
У меня есть файл 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)
Я даже могу зайти в базу данных SQLite, используемую симулятором iOS, и подтвердить, что строка была добавлена.
Однако, когда я запускаю тот же самый код, что и выше, но с as Task
вместо as NSManagedObject
, я получаю сообщение об ошибке с сообщением об ошибке Thread 1: EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)
, связанным с линией var firstTask
.... Если я продолжу выполнение, я получаю EXC_BAD_ACCESS
и 0 misaligned_stack_error_
в верхней части Thread 1 каждый раз, когда я его продвигаю.
Почему этот приведение может привести ко всему этому?