Frage

Ich habe einen Code in einer App, die ein Coredata -verwaltetes Objekt erstellt. In diesem Code verwende ich die folgende Zeile, um eine Eigenschaft festzulegen:

theAuthor.authorID = 1;

Die Eigenschaft wird im verwalteten Objektkopf so deklariert:

@property (nonatomic) uint32_t authorID;

In iOS 5 funktioniert es gut, aber wenn ich in iOS 4.3 debuggte, bekomme ich diesen Fehler:

Das Eigentum "Authorid" ist ein Skalartyp für die Klasse "Autor". Dafür kann keine Settermethode erzeugt werden.

Warum bekomme ich diesen Fehler in 4.3, aber nicht in 5? Sollte ich skalare Eigenschaften vermeiden? Ich bin von C zu OBJ-C gekommen, also arbeite ich lieber mit Skalaren, wenn ich kann, da es sich optimierter anfühlt.

Würde ich besser die Getters und Setter implementieren oder meinen Code ändern, um stattdessen NSinterer oder NSNumber zu verwenden?

War es hilfreich?

Lösung

Sehen hier Informationen zur Verwendung von Skalarattributen in Kerndaten. (Übrigens ist Nsintier ein Skalar). Das Listing 3 ist das bestimmte, an dem Sie interessiert sind. Grundsätzlich müssen Sie Ihren eigenen Accessor dafür schreiben, aber es ist nicht schwierig.

Ab iOS5 können Sie skalare Eigenschaften in Kerndaten verwenden. Dies kann erreicht werden, indem Sie das entsprechende Feld beim Generieren Ihrer verwalteten Objektunterklassen aus dem Datenmodell ankreuzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top