我有类,有几个属性,它看起来像这样:
@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中看到它。我想知道为什么当我使用我的数组时它不会发生,它被设置为属性..
答案 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]
,并且在需要时始终会初始化数组。