2010-09-24 41 views
0

Lorsque vous utilisez une propriété de type NSMutableDictionary en dehors de la classe, je ne peux pas ajouter d'objets.iPhone SDK: Impossible d'ajouter des éléments à un NSMutableDictionary utilisé comme propriété d'une classe?

C'est le fichier class.h

@interface cSummary : NSObject 
{ 
@public 
    NSMutableDictionary* PaymentMethodSalesTotals; 
} 

@property (nonatomic, retain) NSMutableDictionary* PaymentMethodSalesTotals; 

@end 

Le fichier est class.m comme celui-ci

#import "cSummary.h" 


@implementation cSummary 

@synthesize PaymentMethodSalesTotals; 

#pragma mark - 
#pragma mark Initialisation 

-(id)init 
{ 
    return [super init]; 

    PaymentMethodSalesTotals = [[ NSMutableDictionary alloc] init]; 

    [PaymentMethodSalesTotals setObject:[NSNumber numberWithFloat:0.0f] forKey:[NSNumber numberWithInt:10]]; 
    [PaymentMethodSalesTotals setObject:[NSNumber numberWithFloat:0.0f] forKey:[NSNumber numberWithInt:20]]; 
    [PaymentMethodSalesTotals setObject:[NSNumber numberWithFloat:0.0f] forKey:[NSNumber numberWithInt:30]]; 
} 

#pragma mark - 
#pragma mark Memory management 

- (void)dealloc 
{ 
    if (PaymentMethodSalesTotals != nil) 
     [PaymentMethodSalesTotals release]; 

    [super dealloc]; 
} 


@end 

Ensuite, il est utilisé dans une autre classe comme celui-ci

cSummary* oSummary = [[cSummary alloc] init]; 

NSNumber* numPrice = [NSNumber numberWithFloat:150.0f]; 
[oSummary.PaymentMethodSalesTotals setObject:numPrice forKey:[NSNumber numberWithInt:10]]; 

Si Je vois ceci dans le debug la collection de PaymentMethodSalesTotals n'a toujours aucune valeur dedans?

Répondre

2

Dans init vous revenez en premier afin que le dictionnaire ne soit pas alloué/instancié. Déplacez le retour à la fin de la méthode.

-(id)init 
{ 
    return [super init]; //!!!!!!!!!!!! 

    PaymentMethodSalesTotals = [[ NSMutableDictionary alloc] init]; 
.... 
} 
+0

Ha ha, oh mon dieu, très embarrassant, oui c'est ça, parfois je ne peux pas voir le bois pour les arbres. Je vais accepter votre réponse dès que possible: $ –