如何在 Swift 中为 iOS 10 和 iOS 9.3 初始化 NSManagedObject 子类
How to initialise a NSManagedObject subclass for iOS 10 and iOS 9.3 in Swift
我正在 Swift 4 中编写一个应用程序,它应该 运行 用于 iOS 10.4 以及 iOS 9.3。但是,我不知道如何为两个 iOS 版本实现初始化程序。
我收到错误消息:CoreData:错误:无法调用 NSManagedObject 上的指定初始化程序 class 'DeltaSigmaTestsignalGenerator.Project'
以下空子class 由创建 NSManagedObject 子class 生成器自动创建:
import Foundation
import CoreData
public class Project: NSManagedObject {
}
下面的函数应该生成一个新的项目对象
func addNewProject(projectName: String, version: String) {
var newProject: Project!
if #available(iOS 10.0, *) {
newProject = Project(context: managedContext!)
}
else {
newProject = Project()
}
newProject.projectName = projectName
let newVersion = createNewVersion(versionName: version)
newProject.addToVersions(newVersion)
projekte.append(newProject)
do {
try managedContext!.save()
}
catch let error as NSError {
print("Save error: \(error), \(error.userInfo)")
}
}// End of addNewProject
在else
分支写
newProject = NSEntityDescription.insertNewObject(forEntityName: "Project", into: managedContext!) as! Project
并声明 newProject
为常量和非可选(不,你不会得到编译器错误)
let newProject: Project
我正在 Swift 4 中编写一个应用程序,它应该 运行 用于 iOS 10.4 以及 iOS 9.3。但是,我不知道如何为两个 iOS 版本实现初始化程序。
我收到错误消息:CoreData:错误:无法调用 NSManagedObject 上的指定初始化程序 class 'DeltaSigmaTestsignalGenerator.Project'
以下空子class 由创建 NSManagedObject 子class 生成器自动创建:
import Foundation
import CoreData
public class Project: NSManagedObject {
}
下面的函数应该生成一个新的项目对象
func addNewProject(projectName: String, version: String) {
var newProject: Project!
if #available(iOS 10.0, *) {
newProject = Project(context: managedContext!)
}
else {
newProject = Project()
}
newProject.projectName = projectName
let newVersion = createNewVersion(versionName: version)
newProject.addToVersions(newVersion)
projekte.append(newProject)
do {
try managedContext!.save()
}
catch let error as NSError {
print("Save error: \(error), \(error.userInfo)")
}
}// End of addNewProject
在else
分支写
newProject = NSEntityDescription.insertNewObject(forEntityName: "Project", into: managedContext!) as! Project
并声明 newProject
为常量和非可选(不,你不会得到编译器错误)
let newProject: Project