2016-11-03 12 views
27

Pracuję z CoreData, na encji o nazwie "RoleName".Niepoprawna redeclaration na klasach CoreData

Problem polega na tym, że klikam w "Utwórz podklasę NSManagedObject" z mojego modelu i automatycznie tworzy ona klasy dla mojej jednostki.

Jednak w deklaracji klasy, otrzymuję ten błąd:

Invalid redeclaration of "RoleName"

chociaż nie mam żadnej innej klasy o tej samej nazwie.

+0

znalazłaś jeszcze jakieś rozwiązanie? Czy używasz Xcode8 i ios 10? – FBC

+0

Tak, nie, nie mam jeszcze rozwiązania. – dpstart

+0

Odpowiedź Deepukjayana powinna współpracować z Tobą. jego współpraca ze mną. – Prashant

Odpowiedz

10

od Apple: Whats new in Core Data

Xcode automatic subclass generation

Xcode now supports automatic generation of NSManagedObject subclasses in the modeling tool. In the entity inspector:

Manual/None is the default, and previous behavior; in this case you should implement your own subclass or use NSManagedObject. Category/Extension generates a class extension in a file named like ClassName+CoreDataGeneratedProperties. You need to declare/implement the main class (if in Obj-C, via a header the extension can import named ClassName.h). Class Definition generates subclass files named like ClassName+CoreDataClass as well as the files generated for Category/Extension.

The generated files are placed in DerivedData and rebuilt on the first build after the model is saved. They are also indexed by Xcode, so command-clicking on references and fast-opening by filename works.

Nie trzeba ręcznie utworzyć podklasy dla NSManagedObjects.

Sugerowałbym, że pliki, które zostały utworzone z NSManagedObjects usunąć (Przenieś je do kosza) i przejdź do każdego podmiotu w DataModel Inspektora pod Codegen wybrać: Manual/None i tworzyć niż podklasy.

+0

Przykro mi, moje pytanie nie było jednoznaczne. W każdym razie wygenerowałem automatycznie podklasy. – dpstart

99

Dzieje się tak, ponieważ Xcode sam to wszystko obsługuje. Czułem, że to trochę kłopotliwe, ponieważ generowane automatycznie klasy nie mają wszystkich moich właściwości.

Więc wykonaj następujące kroki, aby to co było kiedyś:

  • Usuń jakie kiedykolwiek zajęcia już wykonane dla danych podstawowych.
  • Set class.Module jako moduł Aktualny produkt enter image description here

  • Set Class.codegen jako Manual/None

enter image description here

  • Teraz wybierz swoją jednostkę i tworzenia NSmanagedobject podklasę enter image description here

  • wszystko jest gotowe

+3

Dziękuję człowiekowi. To idealne rozwiązanie. Twoje zdrowie ! – Blisskarthik

+0

Znak @fbc jest prawidłową odpowiedzią, jeśli ci to pomogło. Dzięki. – Deepukjayan

+2

Krok "Aktualny moduł produktu" jest bardzo potrzebny. Dzięki @Deepukjayan – GKK