2016-06-29 82 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