NsmutableArray只显示在所有索引路径添加的最后一个对象
问题描述:
我被卡在一个很小的点。我想从数组中显示虚拟数据到tableView。但我总是只在所有索引路径上获得最后一个对象。我不知道为什么它是最后一个对象覆盖NsmutableArray只显示在所有索引路径添加的最后一个对象
-(NSMutableArray *)clubTypes
{
NSMutableArray *clubTypeDataArray=[[NSMutableArray alloc]init];
ClubTypeDC *clubTypes = [[ClubTypeDC alloc] init];
// slideMenu_dataArray = [[NSMutableArray alloc] init];
clubTypes.clubTypeID = 1;
clubTypes.clubTypeTitle = @"Hot tonight";
clubTypes.clubTypeImage = @"icon_hot_tonight.png";
clubTypes.clubTypeSelectedImage = @"icon_hot_tonight_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes.clubTypeID = 2;
clubTypes.clubTypeTitle = @"Lounges";
clubTypes.clubTypeImage = @"icon_lounges.png";
clubTypes.clubTypeSelectedImage = @"icon_lounges_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes.clubTypeID = 3;
clubTypes.clubTypeTitle = @"Pubs/Sports bars";
clubTypes.clubTypeImage = @"icon_pubs.png";
clubTypes.clubTypeSelectedImage = @"icon_pubs_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes.clubTypeID = 4;
clubTypes.clubTypeTitle = @"Shesha bars";
clubTypes.clubTypeImage = @"icon_shisha_bars.png";
clubTypes.clubTypeSelectedImage = @"icon_shisha_bars_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes.clubTypeID = 5;
clubTypes.clubTypeTitle = @"Ladies night";
clubTypes.clubTypeImage = @"icon_ladies_night.png";
clubTypes.clubTypeSelectedImage = @"icon_ladies_night_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes.clubTypeID = 6;
clubTypes.clubTypeTitle = @"Music festivals";
clubTypes.clubTypeImage = @"icon_music_festivals.png";
clubTypes.clubTypeSelectedImage = @"icon_music_festivals_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes.clubTypeID = 7;
clubTypes.clubTypeTitle = @"Boat parties";
clubTypes.clubTypeImage = @"icon_boat_parties.png";
clubTypes.clubTypeSelectedImage = @"icon_boat_parties_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes.clubTypeID = 8;
clubTypes.clubTypeTitle = @"Evening brunches";
clubTypes.clubTypeImage = @"icon_evening_brunches.png";
clubTypes.clubTypeSelectedImage = @"icon_evening_brunches_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes.clubTypeID = 9;
clubTypes.clubTypeTitle = @"Beach/ Description";
clubTypes.clubTypeImage = @"icon_beach_parties.png";
clubTypes.clubTypeSelectedImage = @"icon_beach_parties_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes.clubTypeID = 10;
clubTypes.clubTypeTitle = @"Configuration";
clubTypes.clubTypeImage = @"icon_configuration.png";
clubTypes.clubTypeSelectedImage = @"icon_configuration_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes.clubTypeID = 11;
clubTypes.clubTypeTitle = @"About Unighted";
clubTypes.clubTypeImage = @"icon_about.png";
clubTypes.clubTypeSelectedImage = @"icon_about_touch.png";
[clubTypeDataArray addObject:clubTypes];
// [clubTypeDataArray addObject:clubTypes];
return clubTypeDataArray;
}
请帮我在哪里出了问题。
答
因为你没有创建新的对象,所以你只需不断地添加和修改同一个对象。
而是执行此操作:
-(NSMutableArray *)clubTypes
{
NSMutableArray *clubTypeDataArray=[[NSMutableArray alloc]init];
ClubTypeDC *clubTypes = [[ClubTypeDC alloc] init];
// slideMenu_dataArray = [[NSMutableArray alloc] init];
clubTypes.clubTypeID = 1;
clubTypes.clubTypeTitle = @"Hot tonight";
clubTypes.clubTypeImage = @"icon_hot_tonight.png";
clubTypes.clubTypeSelectedImage = @"icon_hot_tonight_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes = [[ClubTypeDC alloc] init];
clubTypes.clubTypeID = 2;
clubTypes.clubTypeTitle = @"Lounges";
clubTypes.clubTypeImage = @"icon_lounges.png";
clubTypes.clubTypeSelectedImage = @"icon_lounges_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes = [[ClubTypeDC alloc] init];
clubTypes.clubTypeID = 3;
clubTypes.clubTypeTitle = @"Pubs/Sports bars";
clubTypes.clubTypeImage = @"icon_pubs.png";
clubTypes.clubTypeSelectedImage = @"icon_pubs_touch.png";
[clubTypeDataArray addObject:clubTypes];
...
}
答
您需要实例化新对象每次ClubTypeDC
,否则你将编辑的同一个对象引用的属性。这就是为什么在阵列中的所有元素获取与上次更新数据
-(NSMutableArray *)clubTypes
{
NSMutableArray *clubTypeDataArray=[[NSMutableArray alloc]init];
ClubTypeDC *clubTypes = [[ClubTypeDC alloc] init];
clubTypes.clubTypeID = 1;
clubTypes.clubTypeTitle = @"Hot tonight";
clubTypes.clubTypeImage = @"icon_hot_tonight.png";
clubTypes.clubTypeSelectedImage = @"icon_hot_tonight_touch.png";
[clubTypeDataArray addObject:clubTypes];
clubTypes = [[ClubTypeDC alloc] init];
clubTypes.clubTypeID = 2;
clubTypes.clubTypeTitle = @"Lounges";
clubTypes.clubTypeImage = @"icon_lounges.png";
clubTypes.clubTypeSelectedImage = @"icon_lounges_touch.png";
[clubTypeDataArray addObject:clubTypes];
.....
}
答
需要注意的是,每次添加对象的数组,它也是同一个对象进行更新。
您必须创建新的对象的每个配置它的时候,这样的代码:
ClubTypeDC *clubTypes = [[ClubTypeDC alloc] init];
应该在前面加上所有的配置片段。
你需要'clubTypes = [[ClubTypeDC alloc] init];'每一次 – Akhilrajtr