iPhone SDk: Не удается добавить элементы в NSMutableDictionary, используемый в качестве свойства класса? - PullRequest
0 голосов
/ 24 сентября 2010

При использовании свойства типа NSMutableDictionary вне класса я не могу добавлять объекты.

Это файл class.h

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

@property (nonatomic, retain) NSMutableDictionary*  PaymentMethodSalesTotals;

@end

Файл class.m выглядит следующим образом

    #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

Тогда это используется в другом классе, подобном этому

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

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

Если я рассматриваю это в отладке, коллекция PaymentMethodSalesTotals все еще не имеет значений?

1 Ответ

2 голосов
/ 24 сентября 2010

В init вы возвращаетесь первым, поэтому словарь не выделяется / не создается.Переместить возврат в конец метода.

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

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