Как инициализировать подкласс NSManagedObject для iOS 10 и iOS 9.3 в Swift - PullRequest
0 голосов
/ 04 сентября 2018

Я пишу приложение в Swift 4, которое должно работать как для iOS 10.4, так и для iOS 9.3. Однако я не знаю, как реализовать инициализаторы для обеих версий iOS.

Я получаю сообщение об ошибке: CoreData: ошибка: не удалось вызвать назначенный инициализатор для класса NSManagedObject 'DeltaSigmaTestsignalGenerator.Project'

Следующий пустой подкласс создается автоматически Генератором подкласса 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 Ответ

0 голосов
/ 04 сентября 2018

В else ветке пишите

newProject = NSEntityDescription.insertNewObject(forEntityName: "Project", into: managedContext!) as! Project

и объявить newProject как константу и не обязательно (нет, вы не получите ошибку компилятора)

let newProject: Project
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...