2013-03-08 2 views
1

Я хочу добавить объект в NSMutableArray, но после написания следующего кода я получаю testmarkArray NIL. Где ошибка помогите мне, пожалуйстаОбъект пользовательского класса не получает хранилище в NSMutableArray

[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 
+0

Вы используете ARC? –

+0

Вы уверены, что кодер правильно инициализирован? – TeaPow

+0

он говорит, что benchmarkArray равен нулю, а не пусто – peko

ответ

1

Вы забыли выделить и не инициализировать

benchmarkArray = [[NSMutableArray alloc] init]; 
+0

oh да, я забыл инициализировать массив спасибо pekoe –

2

Ничего плохого с BenchMark класса.

Ваша проблема лежит в том месте, где вы создали benchMarkArray.

После того, свойство этого, вы должны инициализировать его init/awakeFromNib/viewDidLoad способом, как:

benchMarkArray=[[NSArray alloc]init]; 

или

benchmarkArray=[NSArray new]; 
+0

- (void) viewDidLoad { {super viewDidLoad]; // set category/benchmark class object self.category = [[Категория alloc] init]; self.benchmark = [[Benchmark alloc] init]; } Я уже инициализировал его –

Смежные вопросы