所以我一直在学习和使用CoreData
,我一直非常沮丧的下列问题。当我启动我的应用程序时,我想取我的CoreData
作为我创建的自定义NSManagedObject
子类。但强迫下来的铸造从不起作用。我遵循Apple指南。Swift 3核心数据强制向下转换到NSManagedObject子类
我的数据如下。下面是自定义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目标成员)。仍然不起作用。
对不起,如果这不是很清楚,因为我很累,并已在这个问题上工作了几个小时(没有任何进展)。我读过关于堆栈溢出的许多问题,如:
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
但我还是坚持。
你确定你的“saveContext()”?即您确定要保存数据吗?你不能获取不存在的数据:) –
它存在。当我做“po studentUniversityResults”时,我得到了“×10元素 -0:(实体:StudentUniversityData; id:0xd000000000040002 ;数据:{ bottomMathPercentile = 500; bottomReadingPercentile = 500; 中国人名= “\ U5927 \ U5b66 \ U4e8c”; topMathPercentile = 750; topReadingPercentile = 750; universityName = “ASDF大学”; })” –
Hadoren
这些细节不加起来。由于您使用'as!',向下转换应该成功或导致崩溃;除非你是低调的东西,否则你不会得到零结果。如果你使用'as?',那么零将是有意义的,但不能用'as!'。 –