2016-06-19 17 views
18

Zacząłem próbować korzystać z danych Core z wersjami beta wersji 3 i Xcode 8. Kiedy próbuję wygenerować NSManagedObject podklasy z modelu danych rdzenia i Utwórz NSManagedObject podklasy ... opcję w menu Edytor Xcode 8 beta generuje trzy pliki jeden z nich jest _COREDATA_DATAMODELNAME_ + CoreDataModel.swift o następującej treści:Subclassing NSManagedObject z Swift 3 i Xcode 8 beta

import Foundation 
import CoreData 

___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___ 

Ponadto zawartość tego pliku pokazuje dwa ostrzeżenia:

Expressions are not allowed at the top level. 
Use of unresolved identifier '___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___' 

Czy ktoś miał ten sam problem? Jakie jest znaczenie tego nowego pliku?

Dzięki

+0

Nie mogę utworzyć niestandardowej podklas 'NSManagedObject' w Xcode 8 beta. Mam ten sam problem. –

+0

Naprawiłem to prawie problem dla objc przez: http://stackoverflow.com/a/40788081/2246798 – souvickcse

Odpowiedz

44

to chyba (beta) zderzenie z nowym automatycznego generowania podklasy, które mogą być kontrolowane w Inspektorze podmiotu pliku modelu danych.

Z documentation (What's New In Core Data)

Xcode automatycznego generowania podklasy

Xcode teraz obsługuje automatyczne generowanie NSManagedObject podklasy w narzędziu do modelowania. W Inspektorze jednostki:

  • Manual/None jest domyślnym, a poprzednie zachowanie; w takim wypadku użytkownik powinien wykonać własną podklasę lub użyć NSManagedObject.
  • Kategoria/rozszerzenie generuje rozszerzenie klasy w pliku o nazwie podobnej do ClassName+CoreDataGeneratedProperties. Musisz zadeklarować/wdrożyć główną klasę (jeśli w Obj-C, poprzez rozszerzenie można zaimportować o nazwie ClassName.h). -
  • Klasa Definicja generuje pliki podklasy nazwanych jak ClassName+CoreDataClass jak pliki wygenerowane przez kategoria/Extension.

Wygenerowane pliki są umieszczane w DerivedData i przebudowywane na pierwszej kompilacji po zapisaniu modelu. Są one również indeksowane przez Xcode, więc kliknięcie polecenia na odnośnikach i szybkie otwarcie według nazwy pliku działa.

+0

Dzięki. Spróbuję z tymi trzema opcjami, czekając na nowe wydania Xcode 8. – RFG

+5

UWAGA: Możesz również wybrać język kodeina w inspektorze plików, jeśli lubisz ja chcesz wygenerować w Swift. Z jakiegoś powodu mój był Celem C pomimo utworzenia projektu Swift ... Znowu jest to migracja projektów do wersji beta. –

+0

co to jest inspektor podmiotu? -Znajdź odpowiedź: edytujesz swój obiekt, plik .xcdatamodel – Ronen

0

mam podobne problemy z tym beta dewelopera Xcode 8. Niektóre z nich postanowiło Command + S (zapisz zmiany) przed wyjazdem model danych lub przed wygenerować podklasy NSManagedObject. Nie wiem dlaczego, ale w moim przypadku automatyczne zapisywanie nie działało czasami i pojawiały się błędy.

0

Wpadłem na problem z cytowanym wyżej plikiem .swift i stwierdziłem, że komentowanie linii ___ COREDATA ... doprowadziło mnie do błędu na razie. Nie jestem pewien, co ma do zrobienia.

Stwierdzam również, że XCODE 8 ma tendencję do zapominania o nowych polach dodawanych do jednostek CoreData i do wielokrotnego resetowania celu generowania kodu modelu CoreData do celu C, co prowadzi do lawiny .h i.m pliki zamiast plików SWIFT podczas regeneracji plików. Większość problemów, które widziałem, dotyczyły CoreData, ale do tej pory były możliwe do zrealizowania.

Poza tym XCODE 8 zadziwiająco dobrze współpracuje z aplikacją z 25 jednostkami danych i ponad 30 kontrolerami widoku, więc nie narzekam.

Powiązane problemy