Objective c 如何阻止addObject覆盖NSMutableArray中以前的所有对象
addObject正在覆盖以前的所有单元格。因此,如果数组大小为4,则添加对象会增加大小,但也会用相同的内容覆盖所有其他单元格Objective c 如何阻止addObject覆盖NSMutableArray中以前的所有对象,objective-c,xcode,Objective C,Xcode,addObject正在覆盖以前的所有单元格。因此,如果数组大小为4,则添加对象会增加大小,但也会用相同的内容覆盖所有其他单元格 groups = [[NSMutableArray alloc]init]; [groups addObject:[[Group alloc] init]]; [[groups objectAtIndex:0] setGroupName:@"cs480"]; [[groups objectAtIndex:0] setPassword:@"apple1"]; [grou
groups = [[NSMutableArray alloc]init];
[groups addObject:[[Group alloc] init]];
[[groups objectAtIndex:0] setGroupName:@"cs480"];
[[groups objectAtIndex:0] setPassword:@"apple1"];
[groups addObject:[[Group alloc] init]];
[[groups objectAtIndex:1] setGroupName:@"cs481"];
[[groups objectAtIndex:1] setPassword:@"apple2"];
+(void) print{
NSLog(@"size: %lu",(unsigned long)[groups count]);
for(int i = 0; i < [groups count]; i++){
Group *group = [groups objectAtIndex:i];
NSLog(@"%@\t%@\n",[group getGroupName], [group getPassword]);
}
}
问题是什么?这些:
@implementation Group
NSString* groupName;
NSString* password;
NSMutableArray *groupMembers;
NSMutableArray *skillsOfMembers;
不是实例变量。它们只是全局变量。它们在文件范围内声明。它们介于@实现
和相应的@end
之间,这一事实对编译器来说毫无意义
实际上,整个程序只有一组变量,而不是组
类的每个实例都有一组变量
你可能是说:
@implementation Group
{
NSString* groupName;
NSString* password;
NSMutableArray *groupMembers;
NSMutableArray *skillsOfMembers;
}
花括号是使变量成为实例变量所必需的。错误在您的组类中。请发布相关代码。至少有一个错误是,您两次都在索引0处对对象进行操作
-addObject:
添加到数组的末尾。您添加的第二个组
从未调用过-setGroupName:
或-setPassword:
(给定显示的代码)。嘿,感谢您的回复。我加入了小组课。我把索引改为1,但我还是有同样的问题。嘿,我真的想出来了,但就是这个。我在学习的过程中,哈哈。我真的很感谢你的帮助。
@implementation Group
NSString* groupName;
NSString* password;
NSMutableArray *groupMembers;
NSMutableArray *skillsOfMembers;
@implementation Group
{
NSString* groupName;
NSString* password;
NSMutableArray *groupMembers;
NSMutableArray *skillsOfMembers;
}