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

Ios 创建包含自定义类对象的数组,ios,objective-c,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 *latit

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

@interface PlaceHolder : NSObject

@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSString *description;
@property (strong, nonatomic) NSString *webPage;
@property (strong, nonatomic) NSNumber *latitude;
我需要的是,创建一个数组,其中包含该类的对象。很明显,属性不会为零,并且每次都会不同。因此,该数组必须有数百个占位符对象,并且应该可以获取该对象及其属性的任何信息。但是,当我尝试创建该数组时,在NSLog中我看到它只包含(NULL)对象。以下是我尝试将对象添加到数组的方式:

我在标题中写道:

@property  (strong, nonatomic) PlaceHolder  *place;
然后:

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

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

更新:

我初始化数组如下-

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

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

你需要分配初始化你的可变数组

NSMutableArray *myArray = [[NSMutableArray alloc]initWithObjects:self.place,nil];
或者干脆

NSMutableArray *myArray = [[NSMutableArray alloc]init];
然后,可以使用以下命令添加带有for循环的对象或任何需要的对象:

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

您需要alloc init您的可变数组

NSMutableArray *myArray = [[NSMutableArray alloc]initWithObjects:self.place,nil];
或者干脆

NSMutableArray *myArray = [[NSMutableArray alloc]init];
然后,可以使用以下命令添加带有for循环的对象或任何需要的对象:

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

您需要alloc init您的可变数组

NSMutableArray *myArray = [[NSMutableArray alloc]initWithObjects:self.place,nil];
或者干脆

NSMutableArray *myArray = [[NSMutableArray alloc]init];
然后,可以使用以下命令添加带有for循环的对象或任何需要的对象:

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

您需要alloc init您的可变数组

NSMutableArray *myArray = [[NSMutableArray alloc]initWithObjects:self.place,nil];
或者干脆

NSMutableArray *myArray = [[NSMutableArray alloc]init];
然后,可以使用以下命令添加带有for循环的对象或任何需要的对象:

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

我建议延迟实例化数组,这样它只会在真正需要的时候被实例化。由于要将数组设置为属性,因此可以如下所示重写该数组的getter方法:

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

有了它,您可以在代码中的任何地方调用
[self.placeObjectsArray addObject:self.place]
,数组总是在需要时初始化。

我建议延迟实例化数组,这样它只有在真正需要时才会实例化。由于要将数组设置为属性,因此可以如下所示重写该数组的getter方法:

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

有了它,您可以在代码中的任何地方调用
[self.placeObjectsArray addObject:self.place]
,数组总是在需要时初始化。

我建议延迟实例化数组,这样它只有在真正需要时才会实例化。由于要将数组设置为属性,因此可以如下所示重写该数组的getter方法:

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

有了它,您可以在代码中的任何地方调用
[self.placeObjectsArray addObject:self.place]
,数组总是在需要时初始化。

我建议延迟实例化数组,这样它只有在真正需要时才会实例化。由于要将数组设置为属性,因此可以如下所示重写该数组的getter方法:

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


有了它,您可以在代码中的任何地方调用
[self.placeObjectsArray addObject:self.place]
,数组将在需要时始终进行初始化。

您是否完成了
self.placeObjectsArray=[[NSMutableArray alloc]init]在使用之前?显示数组代码,它是在哪里创建的数组,而不仅仅是声明它。请看一下更新问题。你在这里找到解决方案了吗?@Zil这是一篇老文章。我不记得我的解决方案,但重点是,我得到了正确的数组,但出于某种原因,它的输出为nil或nil或Null是NSLog。但实际上它包含值在使用之前?显示数组代码,它是在哪里创建的数组,而不仅仅是声明它。请看一下更新问题。你在这里找到解决方案了吗?@Zil这是一篇老文章。我不记得我的解决方案,但重点是,我得到了正确的数组,但出于某种原因,它的输出为nil或nil或Null是NSLog。但实际上它包含值在使用之前?显示数组代码,它是在哪里创建的数组,而不仅仅是声明它。请看一下更新问题。你在这里找到解决方案了吗?@Zil这是一篇老文章。我不记得我的解决方案,但重点是,我得到了正确的数组,但出于某种原因,它的输出为nil或nil或Null是NSLog。但实际上它包含值在使用之前?显示数组代码,它是在哪里创建的数组,而不仅仅是声明它。请看一下更新问题。你在这里找到解决方案了吗?@Zil这是一篇老文章。我不记得我的解决方案,但重点是,我得到了正确的数组,但出于某种原因,它的输出为nil或nil或Null是NSLog。但事实上它是有价值的。谢谢,我会努力做到的。谢谢,我会努力做到的。谢谢,我会努力做到的。谢谢,我会努力做到的。