Как инициализировать подкласс NSManagedObject для iOS 10 и iOS 9.3 в Swift
Я пишу приложение в Swift 4, которое должно работать как для iOS 10.4, так и для iOS 9.3. Однако я не знаю, как реализовать инициализаторы для обеих версий iOS.
Я получаю сообщение об ошибке: CoreData: error: не удалось вызвать назначенный инициализатор для класса NSManagedObject 'DeltaSigmaTestsignalGenerator.Project'
Следующий пустой подкласс создается автоматически генератором подкласса Create NSManagedObject:
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
1 ответ
Решение
В else
ветка написать
newProject = NSEntityDescription.insertNewObject(forEntityName: "Project", into: managedContext!) as! Project
и объявить newProject
как постоянный и необязательный (нет, вы не получите ошибку компилятора)
let newProject: Project