Core Data, NSNumber, Integer 32 Integer 64
In Core Data, ich habe viele Attribute deklariert als Integer 64, und dann Zugriff über NSNumber-Eigenschaften (dies ist die Standardeinstellung).
Ist es egal, wenn ich es speichern und Zugriff auf diese Werte durch:
NSNumber *mySetValue = [NSNumber numberWithInt:someIntValue];
[myObject setMyNumberProperty:mySetValue];
int myRetrievedValue = [myObject.myNumberProperty intValue];
oder durch
NSNumber *mySetValue = [NSNumber numberWithInteger:someIntegerValue];
[myObject setMyNumberProperty:mySetValue];
NSInteger myRetrievedValue = [myObject.myNumberProperty integerValue];
?
Gibt es zwei Falle, für die ich gerne die Antwort wissen: 1) wenn der Wert, der benötigt wird für Berechnungen verwendet wird (es hält eine Menge oder einen Wert, der umgewandelt werden Währung) und 2), wenn der Wert ist nur eine Art, die im Grunde nur verglichen werden, gegen sich selbst und nicht für irgendwelche Berechnungen. Ist es in Ordnung, zu verwenden numberWithInt und intValue in einem Fall und nicht die anderen, beiden Fällen, oder muss numberWithInteger und integerValue verwendet werden, in beiden Fällen?
Außerdem spielt es eine Rolle, wenn ich vorher gespeichert alle Werte als [NSNumber numberWithInt:] - kann ich einfach die Weise ändern, die ich speichern/abrufen " den Wert jetzt, oder muss ich die Konsistenz so nicht zu schaffen ein problem mit den aktuellen user-Daten?
Ich bin besonders interessiert in dieser Arbeit sowohl in einer 32-bit-und 64-bit-iOS-app.
Auch - macht es einen Unterschied, um Ihre Antwort, wenn die Core-Daten-Wert ist Integer 32 Integer 16 Integer-64, etc?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie mit Hilfe
NSInteger
Wann immer Sie können. Der Grund dafür ist, dass es unabhängig von der Plattform sein. Auf 32-bit-Architektur, einNSInteger
wird einint
auf 64-bit -long
.Daher, Sie sind in Ordnung, die das
int
-Methoden vor - es ist die kleinere Teilmenge der beiden.Was Sie gespeichert haben, in Ihre Core-Data-Datenbank ist auch OK für den gleichen Grund. Die Tatsache, dass Sie den Wert zu Integer64 sorgt dafür, dass auch
long
zahlen gespeichert werden, richtig in Zukunft.Den Einsatz als Währung ist auch OK, mit Einschränkungen. Wenn Sie hauptsächlich daran interessiert, in Cent, kein Bruchteil von cents, du kannst natürlich nur verfolgen Cent als ganze zahlen. Jedoch, wenn Sie wollen, mehr zu tun, komplexe Berechnungen, in denen Bruchteile von Cent, wie einige Bilanzierungs-und Bewertungsmethoden oder für die Währungsumrechnung, und speichern diese Ergebnisse müssten Sie so etwas wie eine
float
oder (besser) einedouble
.