2016-12-06 2 views
6

zu entwickeln Ich habe gerade angefangen zu lernen, wie man heute Core Data verwendet und stieß auf ein Problem, wenn ich von NSManagedObject in meinem Ziel-C-Projekt. Ich folge der Stanford iOS 7-Klasse (ich komme aus Swift Hintergrund und möchten mehr über objective-c lernen) Stanford University Developing iOS 7 Apps: Lecture 13 - Core Data and Table View Hier ist, was ich bisher getan habe:Core Data - Die richtige Art, NSManagedObject in objective-c Projekt Xcode 8

Erste

meine CoreDataModel.xcdatamodeld Datei erstellen, und konfigurieren meine Entitäten wie dieses

enter image description here

Weiter

dieMitDatei markiert, gehe ich auf die Editor und versuchen NSManagedObject Unterklasse

enter image description here

Vier Swift-Dateien erstellen wurden MyProject-Bridging-Header.h inclduing eine leere Brücken Header-Datei erstellt.

enter image description here

Ich habe ein viele Compiler-Fehler: enter image description here

Ich bin verwirrt darüber, warum die Xcode Swift Dateien für mich statt objective-c eine generieren, da ich bereits mit objective-c als meine Sprache konfiguriert haben .

Wie kann ich meine Header-Datei konfigurieren meine Swift Dateien zu machen objective-c erkennen oder ist es eine Möglichkeit, objective-c Unterklasse-Datei statt, wie .m und .h-Datei zu erstellen?

Der Neudeklaration Fehler aus dem die codegen Frage kommen Xcode automatic subclass generation

Meine Drived Daten die folgenden Dateien haben enter image description here

Jeder Vorschlag ist willkommen.

Antwort

10

Wenn Sie Ihr Modell in Project Navigator wählen, in Datei-Inspektor Sie haben eine Option, die Sprache, in der Code auszuwählen generiert:

Changing language of generated model

6

Diese Answer hier bereits behandelt, wie Swift-Dateien zu generieren . Meine deckt andere fragliche Abfragen ab.

Xcode unterstützt jetzt die automatische Generierung der NSManagedObject-Unterklassen im Modellierungstool. Die generierten Dateien werden in DerivedData platziert und beim ersten Build nach dem Speichern des Modells neu erstellt. Sie sind auch von Xcode indiziert, so Befehlsklick auf Referenzen und schnell öffnenden von Dateinamen funktionieren.

Für dieses mehr beziehen Apple Documentation.

Lösung für Ungültige Neudeklaration von NSManagedObject:

Für XCode 8.1, bevor Sie NSManagedObject durch Editor zu erstellen, wählen Sie Ihre Entity, gehen Sie zu Daten Model Inspector und unter Codegen wählen 'Manuell/Keine' wie folgt aus:

Und dann NSManagedObject Unterklasse erstellen.

Falls Sie bereits NSManagedObject Unterklasse erstellt haben, gehen Sie wie folgt vor:

  1. Gehen Sie zu Ihrem aktuellen .xcdatamodeld, setzen alle EntitiesCodegen zu 'Manuell/Keine'.
  2. Speichern Sie das Projekt, löschen Sie abgeleitete Daten.
  3. Reinigen & das Projekt erstellen.

Es sollte funktionieren.

Verwandte Themen