2016-06-29 12 views
-2

私は、テーブルビューにデータを供給するためにネストされたディクショナリを使用しているiOSアプリケーションを持っています。辞書の構造は次のとおりです。ネストされたディクショナリ内の単一の要素へのアクセス

Dictionary<string1, Dictionary<string2, string3>> dict; 
(I have named the strings here for clarification purposes) 

現在、このネストされたディクショナリの単一要素にアクセスする際に問題があります。 string1をセクションタイトルに、string2をセルテキストラベルに、string3をセル詳細テキストラベルにしたいと考えています。ここでは、テーブルのデータソースとの私の現在のアプローチです:

public class SupervisionDetailSource:UITableViewSource 
{ 
    Dictionary<string, Dictionary<string, string>> dict; 
    string Identifier = "cell"; 

    public SupervisionDetailSource(Dictionary<string, Dictionary<string, string>> dict) 
    { 
     this.dict = dict; 
    } 

    public override string TitleForHeader(UITableView tableView, nint section) 
    { 
     return dict.Keys.ElementAt((int)section); 
    } 

    public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) 
    { 
     UITableViewCell cell = tableView.DequeueReusableCell(Identifier); 
     if (cell == null) 
      cell = new UITableViewCell(UITableViewCellStyle.Subtitle, Identifier); 

     //this is not right 
     cell.TextLabel.Text = dict[supvList.Keys.ElementAt(indexPath.Section)][dict[dict.Keys.ElementAt(indexPath.Row)]]; //string2 
     cell.DetailTextLabel.Text = string3 ...? 

     return cell; 
    } 

    public override nint RowsInSection(UITableView tableview, nint section) 
    { 
     string key = dict.Keys.ElementAt((int)section); 
     return dict[key].Count; 

    } 

    public override nint NumberOfSections(UITableView tableView) 
    { 
     return dict.Keys.Count; 
    } 
} 

は、任意のヘルプ

+0

あなたが "正しくない" とはどういう意味ですか? – Alexander

+0

@AMomchilov私の辞書の 'string2'にアクセスする私の現在のアプローチが正しくない/コンパイルできないことを意味します。 – panthor314

+0

これは、私がまだ知らなかったことを教えてくれません。それはコンパイラのエラーですか?もしそうなら、エラーメッセージは何ですか?実行時エラーですか?もしそうなら、スタックトレースは何ですか?論理的なエラーですか?もしそうなら、実際の出力と期待される出力は何ですか? – Alexander

答えて

0

をありがとう、私は難易度ネストされた要素へのアクセスを持っていたが、私はそれが動作するようになってしまいました。私はこの問題にどのようにアプローチする必要があるかについて誤解を抱いていました。

マイソリューション:

cell.TextLabel.Text = dict[dict.Keys.ElementAt(indexPath.Section)].Keys.ElementAt(indexPath.Row); //string2 
cell.DetailTextLabel.Text = dict[dict.Keys.ElementAt(indexPath.Section)][dict[dict.Keys.ElementAt(indexPath.Section)].Keys.ElementAt(indexPath.Row)]; //string3 
+2

あなたは本当にそれを少しきれいにしてください。それはかなり毛深いです。 – Alexander

関連する問題