在for循环中向字符串添加字符串,而不是覆盖objective-c中的值

时间:2014-08-05 11:06:35

标签: objective-c for-loop nsmutablearray

我在.h文件中定义了一个NSMutableArray * nameArray。并在.m文件中的for循环中使用此nameArray添加字符串,如下所示:

for (int i=0; i<[data count]; i++) {        
  NSDictionary* place = [data objectAtIndex:i];        
  NSString *name=[place objectForKey:@"name"];        
  _nameArray = [[NSMutableArray alloc] init];
  [_nameArray addObject:name];
}        
NSLog(@"After loop, Name is %@", _nameArray);

实际上,它应该在这个数组中有几个名字。但是为什么它只输出一个最后添加在数组中的名字?

1 个答案:

答案 0 :(得分:2)

你必须在循环之外创建你的数组,这是你的问题。

// Init array
_nameArray = [[NSMutableArray alloc] init];
// Fill array
for (int i=0; i<[data count]; i++) {        
  NSDictionary* place = [data objectAtIndex:i];        
  NSString *name=[place objectForKey:@"name"];  
  [_nameArray addObject:name];
}   
// Log array     
NSLog(@"After loop, Name is %@", _nameArray);

所有对象都被添加到一个自己的数组中,只有最后一个数组不会被覆盖,因此在日志中。

相关问题