NSNumber als String darstellen

MacLovin1

Neues Mitglied
Thread Starter
Registriert
19.09.2010
Beiträge
5
Reaktionspunkte
0
Hi, ich habe eine Frage zur Programmierung von Apps:

Ich habe eine Klasse "Lager"
von dieser Klasse erstellt mein ViewController eine Instanz. Die Klasse Lager hat eine im Moment relevante Instanz von NSNumber "holz", auf die es zugreift.
ViewController greift zudem auf ein UILabel "rohstoffe" zu, dessen Text es ändert.
Am Anfang wird in "zug" holz ein Wert zugewiesen, 3000, dieser Wert wird dann über einen NSNumberFormatter in einen String umgewandelt und dem UILabel-Text zugewiesen.
zug wird bei viewDidLoad aufgerufen

- (void) zug {
self.lager.holz = [NSNumber numberWithInt:3000];

NSNumber *n = [NSNumber numberWithInt: (int) self.lager.holz];

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
self.rohstoffe.text = [formatter stringFromNumber: n];

}​

Hier die Klasse Lager.h:

#import <Foundation/Foundation.h>


@interface Lager : NSObject {
NSNumber *holzproduktion;

}

@property (nonatomic, retain) NSNumber *holz;


@end

In Lager.m wird nur @synthesize holz;
aufgerufen.


Mein Problem:
Es wird, wenn ich das Programm laufen lasse beim Label nur "0" und nicht 3000 angezeigt.
Warum??

Ich hoffe, ihr könnt mir helfen!
 
Deins:

self.lager.holz = [NSNumber numberWithInt:3000]; => ist ein NSNumber object

NSNumber *n = [NSNumber numberWithInt: (int) self.lager.holz]; => hier versuchst du ein opbject in ein in zu casten wie soll das
gehen????
(int) self.lager.holz liefert nil/NULL deswegen deine 0

Meins:

self.lager.holz = [NSNumber numberWithInt:3000];

NSNumber *n = [NSNumber numberWithInt: [self.lager.holz intValue]];
oder
NSNumber *n = self.lager.holz; oder [self.lager.holz retain]; oder [self.lager.holz copy]; // je nachdem was du vor hast; Bei dir reicht aber Ersteres.
 
Zurück
Oben Unten