Swift 3 核心数据强制向下转换为 NSManagedObject 子类

Swift 3 Core Data Forced Downcasting to NSManagedObject Subclass

所以我一直在学习和使用 CoreData,但我对以下问题感到非常沮丧。当我启动我的应用程序时,我想获取我的 CoreData 作为我创建的自定义 NSManagedObject 子类。但是强制向下铸造永远行不通。我遵循了 Apple 指南。

我的数据如下。下面是自定义 NSManagedObject 子类:

import UIKit
import CoreData
@objc(StudentUniversityData)

class UniversityData: NSManagedObject {
    @NSManaged var universityName:String
    @NSManaged var chineseName:String
    @NSManaged var bottomReadingPercentile:NSNumber
    @NSManaged var bottomMathPercentile:NSNumber
    @NSManaged var topReadingPercentile:NSNumber
    @NSManaged var topMathPercentile:NSNumber
}

这是我创建的代码:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let managedContext = appDelegate.managedObjectContext
    let studentUniversityFetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "StudentUniversityData")
    studentUniversityFetchRequest.returnsObjectsAsFaults = false    
    do {
        let studentUniversityResults = try managedContext.fetch(studentUniversityFetchRequest)
        savedUniversities = studentUniversityResults as! [UniversityData] // the problem is HERE; this part never works
    } catch let error as NSError {
        print ("Could not fetch \(error), \(error.userInfo)")
    }
}

Here is one picture of my CoreData entity.

Here is another picture of my CoreData entity

无论我尝试做什么,savedUniversities 属性 始终为零。

另外,我了解到有多个目标会搞砸代码。所以我确保我所有的 类 只有一个目标(我去掉了测试和 UItests 目标成员)。还是不行。

抱歉,如果这不是很清楚,因为我已经很累了,并且已经为这个问题工作了几个小时(没有任何进展)。我读过很多关于 Stack Overflow 的问题,例如:

Unable to find specific subclass of NSManagedObject

CoreData: warning: Unable to load class named

Core Data: Could not cast value of type 'MyType_MyType_2' to MyType

但我还是卡住了。

所以我又解决了半天的问题

我所做的是将我的核心数据实体重命名为 "UniversityData"。这使得它匹配 NSManagedObject 子类 "UniversityData."

名称匹配后一切正常。

似乎许多 Core Data 只有在名称与子类中的所有内容完全匹配时才有效。