iPhone SDk:无法将项目添加到用作类的属性的NSMutableDictionary?
问题描述:
在类的外部使用NSMutableDictionary类型的属性时,我无法添加对象。iPhone SDk:无法将项目添加到用作类的属性的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集合仍然没有值吗?
答
在init中,您首先返回,以便字典不被分配/实例化。将返回移动到方法的末尾。
-(id)init
{
return [super init]; //!!!!!!!!!!!!
PaymentMethodSalesTotals = [[ NSMutableDictionary alloc] init];
....
}
哈哈哈,哦,我的天哪,非常尴尬,是的,就是这样,有时我看不到树木。我会尽快接受你的回答:$ – 2010-09-24 11:11:49