所以我一直在学习和使用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
但我仍然坚持。
答案 0 :(得分:0)
所以我又能在半天后解决问题。
我所做的是将我的核心数据实体重命名为“UniversityData”。这使它与NSManagedObject子类“UniversityData。”相匹配。
名字匹配后一切正常。
似乎很多核心数据只有在名称与完全匹配子类中的所有内容时才有效。