gpt4 book ai didi

ios - NSMutableDictionary 作为数据源 : can´t remove cell

转载 作者:行者123 更新时间:2023-11-29 03:59:44 25 4
gpt4 key购买 nike

我使用 NSMutableDictionary 来填充我的 UITableView,效果很好。但是,我想删除行,然后在调用 -reloadData 方法之前必须从字典中删除目标单元格。

我很难找到 NSMutableDictionary 中的正确对象并将其删除。我将在下面发布结构。

country = [
{
citys = [
{
id = 4;
cityName = New York;
},
{
id = 5;
cityName = LA;
}
];

id = 2;
countryName = US;
},
{
citys = [
{
id = 21;
cityName = Oslo;
}
];

id = 31;
countryName = Norway;
}

];

我使用“countryName”值作为标题部分名称。所以,我知道已被点击的单元格,以及如何在数组中找到该对象并将其删除。

最佳答案

希望你不会介意,如果我为你写一些代码。不要只是复制和粘贴它。尝试去理解它的本来面目。以便您将来可以解决此类需求。

我将您的数据放在 plist 中,并将其提取到 NSMutableDictionary 中,然后像这样提取到 NSMutableArray 中。

// In the viewDidLoad: method
NSMutableDictionary *plistData = [NSMutableDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"Countries" ofType:@"plist"]];
sectionedArray = [plistData objectForKey:@"Country"];

然后是以下tableView方法。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return [sectionedArray count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
NSMutableArray *array = [[sectionedArray objectAtIndex:section] objectForKey:@"citys"];
return [array count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier];;
}
// Configure the cell...
NSMutableArray *array = [[sectionedArray objectAtIndex:indexPath.section] objectForKey:@"citys"];
NSDictionary *dict = [array objectAtIndex:indexPath.row];
cell.textLabel.text = [dict valueForKey:@"cityName"];
return cell;
}

// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}

// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
NSMutableArray *array = [[sectionedArray objectAtIndex:indexPath.section] objectForKey:@"citys"];
[array removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

NSLog(@"Sectioned array %@", sectionedArray);
}
}

关于ios - NSMutableDictionary 作为数据源 : can´t remove cell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16043480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com