自定义类的对象没有在NSMutableArray中获得存储

时间:2013-03-08 10:21:46

标签: objective-c nsmutablearray nsobject

我想将对象添加到NSMutableArray但是在编写以下代码后我得到了benchmarkArray NIL。错误在哪里帮助我

    [benchmark setBenchmarkTitle:self.benchmarkTitle.text];
    [benchmark setBenchmarkDescription:self.benchmarkDescription.text];
    [benchmarkArray addObject:benchmark];

我的Benchmark课程是:

@interface Benchmark : NSObject

@property (nonatomic, retain) NSString *bid;
@property (nonatomic, retain) NSString *benchmarkTitle;
@property (nonatomic, retain) NSString *benchmarkDescription;

-(id)initWithCoder: (NSCoder *)coder;
-(void)encodeWithCoder:(NSCoder *)encoder;

@end

@implementation Benchmark

@synthesize bid;
@synthesize benchmarkTitle;
@synthesize benchmarkDescription;

- (id) initWithCoder:(NSCoder *)coder {

    self = [super init];
    if(self) {
        bid = [coder decodeObjectForKey:@"id"];
        benchmarkTitle = [coder decodeObjectForKey:@"benchmarkTitle"];
        benchmarkDescription = [coder decodeObjectForKey:@"benchmarkDescription"];
    }
    return self;
}

- (void) encodeWithCoder:(NSCoder *)encoder {

    [encoder encodeObject:bid forKey:@"id"];
    [encoder encodeObject:benchmarkTitle forKey:@"benchmarkTitle"];
    [encoder encodeObject:benchmarkDescription forKey:@"benchmarkDescription"];
}

@end

2 个答案:

答案 0 :(得分:2)

您的BenchMark Class没有错。

您的问题出在您创建benchMarkArray的课程中。

在创建它的属性后,您需要在init/awakeFromNib/viewDidLoad方法中将其初始化为:

benchMarkArray=[[NSArray alloc]init];

,或者

benchmarkArray=[NSArray new];

答案 1 :(得分:1)

你忘了分配和初始化

benchmarkArray = [[NSMutableArray alloc] init];