创建一个包含自定义类对象的数组

时间:2014-06-16 11:54:10

标签: ios objective-c

我有类,有几个属性,它看起来像这样:

@interface PlaceHolder : NSObject

@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSString *description;
@property (strong, nonatomic) NSString *webPage;
@property (strong, nonatomic) NSNumber *latitude;

我需要的是创建一个包含该类对象的数组。显而易见,属性不会是零,每次都会有所不同。因此,该数组必须具有数百个PlaceHolder对象,并且应该可以获取该对象及其属性的任何信息。但是,当我尝试创建该数组时,在NSLog中我看到它只包含(NULL)对象。这就是我尝试将对象添加到数组的方式:

在标题中我写道:

@property  (strong, nonatomic) PlaceHolder  *place;

然后:

self.place = [[PlaceHolder alloc]init];
    self.place.name = nameString;
    NSLog(@"%@ name???", self.place.name);
    [self.placeObjectsArray addObject:self.place];

self.place.name不是nil,但仍然是数组为空。好吧,它不是真的,它不是空的,但它只包含(null)对象。如何使用我的类的对象填充数组?

任何建议都将不胜感激,谢谢!

更新:

我是这样的init数组 -

-(id)initWithDelegate:(id)delegateObj{
    ...
    self.placeObjectsArray = [NSMutableArray array];
    ...
    return self;
}

更新:现在,当我尝试以相同的方法初始化数组(而不是设置@property和强关系)时,我可以在NSLog中看到它。我想知道为什么当我使用我的数组时它不会发生,它被设置为属性..

2 个答案:

答案 0 :(得分:2)

你需要对你的Mutable数组进行alloc-init;

NSMutableArray *myArray = [[NSMutableArray alloc]initWithObjects:self.place,nil];

或只是

NSMutableArray *myArray = [[NSMutableArray alloc]init];

然后,您可以使用以下内容添加带有for循环或任何您需要的对象:

for ( YOURINSTRUCTION )
{
[myArray addObject:YOUROBJECT]
}

答案 1 :(得分:1)

我建议懒惰实例化数组,这样它只会在真正需要时实例化。由于您将数组设置为属性,因此您可以像这样覆盖 getter 方法:

- (NSMutableArray *)placeObjectsArray
{
  if (!_placeObjectsArray) _placeObjectsArray = [[NSMutableArray alloc] init];
  return _placeObjectsArray;
}

有了这个,您可以在代码中的任何位置调用[self.placeObjectsArray addObject:self.place],并且在需要时始终会初始化数组。