0

配列の辞書があります(その中に配列と辞書もあります)。

UITableViewに追加UITableViewCellEditingStyleDeleteしたので、特定の辞書の配列を辞書から削除したいと思います。

データのコンソール ビュー:

{
        A =     (
                   {
                    address = "Talala (gir)";
                    "main_id" = 1;
                    mobile = 8878876884;
                    name = "Amit Patel";
                   },
                   {
                    address = "Junagdh";
                    "main_id" = 5;
                    mobile = 4894679865;
                    name = "Arjun Patel";
                   }
                );
            J = (
                    {
                    address = "Taveli";
                    "main_id" = 6;
                    mobile = 87886356085878;
                    name = "Jasmin Patel";
                    },
                    {
                    address = "Gujarat";
                    "main_id" = 4;
                    mobile = 6636633368;
                    name = "Jatin ";
                   }
               );
            R =     (
                        {
                    address = "Mumbai";
                    "main_id" = 2;
                    mobile = 999686322;
                    name = "Rajan Patel";
                }
            );
            S =     (
                        {
                    address = "Rajkot";
                    "main_id" = 3;
                    mobile = 8866086549;
                    name = "Sumit Patel";
                }
            );
        }

たとえば、削除したい: 配列のインデックスは、キーA1を持つ辞書からのものです

次のコードで試してみる必要があります

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {

        NSDictionary *dic = [[self.finalPDic objectForKey:[self.listOfHeader objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row];

        NSLog(@"%@",dic);

        [self.finalPDic removeObjectForKey:dic];

        NSLog(@"%@",self.finalPDic);

        [self.tblView reloadData];
    }
    if (editingStyle == UITableViewCellEditingStyleInsert)
    {
    }
}

しかし、メインからレコードを削除できませんNSMutableDictionary

4

5 に答える 5

1

まず、データ構造の各コンポーネントが変更可能であることを確認してください (つまり、ベース ディクショナリ、内部配列、必須ではありませんが、配列内のディクショナリも同様です)。

最後に、commitEditingStyleメソッドをこれに置き換えます。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath  {
    if (editingStyle == UITableViewCellEditingStyleDelete) {            
        [[self.finalPDic objectForKey:[self.listOfHeader objectAtIndex:indexPath.section]] removeObjectAtIndex:indexPath.row];
        [tableView reloadData];
    }
}
于 2013-04-19T06:34:00.640 に答える
0

手順に従ってください。MutableArray を取得し、辞書から配列全体をコピーします。

NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[self.finalPDic objectForKey:  [self.listOfHeader objectAtIndex:indexPath.section]]];

キーの辞書からオブジェクト全体を削除します(キーをどこかに保存しますNSString *key = [self.listOfHeader objectAtIndex:indexPath.section]

  [self.finalPDic  removeObjectForKey:[self.listOfHeader objectAtIndex:indexPath.section]];

tempArray から、indexPath.row に基づいて必要な辞書を削除します

    [tempArray removeObjectAtIndex:objectAtIndex:indexPath.row];

保存したキーを使用して tempArray を mainDict に追加します

 [self.finalPDic  setObject:tempArray forKey:key];//ie saved key.

これが役に立てば幸いです、私は試しました。

于 2013-04-18T08:14:43.897 に答える