Wie erhöhe ich eine NSNumber?
dh myNSNumber ++
objective-c
Der Lernende
quelle
quelle
NSNumber *
Überprüfen Sie bei der Verwendung immer, ob die primitiven Typen ausreichen.Antworten:
Update: Zu Ihrer Information, ich persönlich mag die einzeiligen Antworten von BoltClock und DarkDusts besser. Sie sind prägnanter und erfordern keine zusätzlichen Variablen.
Um ein zu erhöhen
NSNumber
, müssen Sie seinen Wert abrufen, diesen erhöhen und in einem neuen speichernNSNumber
.Zum Beispiel für das
NSNumber
Halten einer Ganzzahl:Oder für das
NSNumber
Halten einer Gleitkommazahl:quelle
...
? Das ist eine Pseudocode-Referenz, oder? XCode nicht...
...
ist nur ein Platzhalter für eine beliebige Nummer.NSNumber
Objekte sind unveränderlich; das Beste was Sie tun können , ist den Grundwert zu packen, erhöhen sie dann das Ergebnis in seinem eigenen wickelnNSNumber
Objekt:quelle
Für alle, die die neueste Version von Xcode verwenden (Schreiben ab 4.4.1, SDK 5.1), können Sie mithilfe von Objektliteralen den Code noch ein bisschen mehr bereinigen ...
Es ist immer noch eine Qual, mit dem Boxen und Auspacken umzugehen, um einfache Operationen durchzuführen, aber es wird besser oder zumindest kürzer.
quelle
NSNummern sind unveränderlich, Sie müssen eine neue Instanz erstellen.
quelle
Setzen Sie sie alle zusammen, und Sie haben:
quelle
NSNumber
Objekte unveränderlich sind (?)Ich mag den Punktausdruck, weil er prägnanter ist und deshalb von IOS in erster Linie unterstützt wird:
quelle
Wenn Sie damit einen ganzzahligen Wert speichern:
Für Gleitkomma-Inhalte lautet die kurze Antwort wie folgt, aber es ist eine schlechte Idee, dies zu tun. Sie verlieren an Präzision und wenn Sie später einen Vergleich wie [myNSNumber isEqual: @ (4.5)] durchführen, werden Sie möglicherweise überrascht sein ::
Wenn Sie Gleitkommazahlen berechnen müssen, die in Objective-C als Objekte dargestellt werden (dh wenn Sie sie in Arrays, Wörterbüchern usw. ablegen müssen), sollten Sie diese verwenden
NSDecimalNumber
.quelle
Verwenden Sie eine Kategorie, um die zukünftige Verwendung zu vereinfachen. Hier ist eine Grundidee.
quelle
Viele gute Infos in den Antworten auf diese Frage. Ich habe die ausgewählte Antwort in meinem Code verwendet und es hat funktioniert. Dann fing ich an, den Rest der Beiträge zu lesen und vereinfachte den Code sehr. Es ist etwas schwieriger zu lesen, wenn Sie nicht mit den Änderungen in der Notation vertraut sind, die in Xcode 5 eingeführt wurden, aber es ist viel sauberer. Ich könnte es wahrscheinlich nur eine Zeile machen, aber dann ist es ein bisschen zu schwer herauszufinden, was ich tue.
Ich speichere eine NS-Nummer in einem Wörterbuch und möchte sie erhöhen. Ich bekomme es, konvertiere es in ein int, erhöhe es, während ich es in eine NSNumber konvertiere, und setze es dann wieder in das Wörterbuch ein.
Alter Code
Neuer Code
quelle