Objective-C error: Eigenschaft 'active' ist ein Skalartyp für die Klasse 'Routine'. Es kann keine Getter-Methode dafür generiert werden

7

Ich bekomme den obigen Fehler, wenn das folgende im iphone Simulator (3.0 OS) läuft:

%Vor%

Wie Sie sehen können, untergliedere ich NSManagedObject, weil ich Core Data verwende. In meinem Datenmodell ist "aktiv" ein Optionsattribut vom Typ Boolean.

Was mache ich hier falsch?

Danke!

    
higginbotham 20.07.2009, 06:55
quelle

2 Antworten

17

Alles was aus der CD kommt, ist ein Objekt, kein Scaler. Also, ändern Sie Ihren Code zu:

%Vor%

Wenn Sie möchten, können Sie einen Convenience-Accessor als Skalar hinzufügen:

%Vor%

Wenn Sie bei gedrückter Strg-Taste auf eine Eigenschaft im Modelleditor klicken, wird ein riesiges Kontextmenü geöffnet, in dem Sie die entsprechenden Deklarationen und Definitionen in Ihre Einfügeplatine kopieren können, damit Sie sie nicht selbst schreiben müssen .

    
Louis Gerbarg 20.07.2009, 07:42
quelle
2

Für was es wert ist, fand ich, dass die Dokumente eine etwas andere Lösung für Skalare bieten. Im Allgemeinen wird von der Verwendung von Skalaren anstelle von Objekten abgeraten, aber wenn Sie dies tun, dann Ссылка erklärt, wie es geht. Sie verwenden "primitiveName" und "setPrimitiveName", um auf automatisch generierte Accessoren zuzugreifen, die Ihren Skalar in ein Objekt (z. B. NSNumber) einfügen. Erstellen Sie dann eine skalare @ Eigenschaft und schreiben Sie Zugriffsmethoden für Ihre Eigenschaft, die die Grundelemente verwenden.

Dies scheint teuer zu sein, da CoreData unter der Haube Ihr Attribut als Skalar im peristenten Speicher speichert und es in ein Objekt konvertiert, um es als primitiv darzustellen. Wenn Sie also setName implementieren, während ich die Dokumente und den Beispielcode lese, wird Ihr Wert in ein Objekt eingefügt und der Skalar wird dann in der automatischen Implementierung von setPrimitiveName wieder extrahiert. Es scheint so, als würde man für jedes get oder set unnötig herummarschieren.

    
dk. 30.11.2009 17:21
quelle