【发布时间】:2014-07-24 06:19:40
【问题描述】:
我在 Swift 中使用 Core Data,但无法存储从 fetch 请求返回的数组。我的数据模型中有两个实体:任务和作业。作业的父实体是任务。我为这两个实体自动生成了类:
Task.swift
import Foundation
import CoreData
class Task: NSManagedObject {
@NSManaged var name: String
@NSManaged var due: NSDate
@NSManaged var subject: Subject
}
Homework.swift
import Foundation
import CoreData
class Homework: Task {
}
在我的视图控制器中,视图确实加载了,我有以下代码。
var error: NSError? = nil
let fetchRequest = NSFetchRequest()
let entity = NSEntityDescription.entityForName("Task", inManagedObjectContext: managedObjectContext)
fetchRequest.entity = entity
tasks = managedObjectContext.executeFetchRequest(fetchRequest, error: &error) as [Task]
之前在视图控制器中,我初始化了任务:
var tasks : [Task] = []
但是,当我运行应用程序时,我在将数组分配给任务的那一行出现以下运行时错误:fatal error: array cannot be downcast to array of derived
如果我将赋值行替换为var temp = managedObjectContext.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject],则不会发生错误,但我需要将其保存为任务数组,以便能够使用我生成的自定义类。我做错了什么?
【问题讨论】:
-
比较developer.apple.com/library/prerelease/mac/documentation/Swift/…中的“实现核心数据托管对象子类”。