2013-04-29 35 views
0
dictionaryOfWebsites = [[NSMutableDictionary alloc] init]; 
[dictionaryOfWebsites setObject:@"http://www.site1.com" forKey:@"Site1"]; 
[dictionaryOfWebsites setObject:@"http://www.site2.com" forKey:@"Site2"]; 
[dictionaryOfWebsites setObject:@"http://www.site3.com" forKey:@"Site3"]; 
[dictionaryOfWebsites setObject:@"http://www.site4.com" forKey:@"Site4"]; 

上面是我的字典。我想有一個tableview,其中UITableViewCell中的文本將會說「Site1」,並且該子文本將具有該URL。如何將我的NSMutableDictionary中的數據加載到我的UITableView中

我知道這會讓我所有的按鍵

NSArray *keys = [dictionaryOfWebsites allKeys]; 

// values in foreach loop 
for (NSString *key in keys) { 
    NSLog(@"%@ is %@",key, [dict objectForKey:key]); 
} 

你的幫助,將不勝感激

如果我的做法是不是最好的,請讓我知道這樣我就可以借鑑你的建議。

回答

3

嘗試

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return [[dictionaryOfWebsites allKeys] count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //Initialize cell of style subtitle 
    NSArray *keys = [[dictionaryOfWebsites allKeys]sortedArrayUsingSelector:@selector(compare:)]; 
    NSString *key = keys[indexPath.row]; 

    cell.textLabel.text = key; 
    cell.detailTextLabel.text = dictionaryOfWebsites[key]; 

    return cell; 
} 

編輯:最好是有字典的這些類型的代表組成的數組。

每個帶有兩個鍵值對的字典標題和副標題。

self.dataArray = [NSMutableArray array]; 
NSDictionary *dict = @{@"Title":@"Site1",@"Subtitle":@"http://www.site1.com"}; 
[dataArray addObject:dict]; 
//Add rest of the dictionaries to the dataArray 


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return [self.dataArray count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //Initialize cell of style subtitle 

    NSDictionary *dict = self.dataArray[indexPath.row]; 
    cell.textLabel.text = dict[@"Title"]; 
    cell.detailTextLabel.text = dict[@"Subtitle"]; 

    return cell; 
} 
+0

使用' - [NSDictionary allKeys]'不是一個好主意,因爲密鑰的順序不能保證在多個調用中保持不變。從文檔:'數組中元素的順序沒有定義.'。 – Mar0ux 2013-04-29 16:24:54

+0

@ Mar0ux確切地說,我給出了另一個建議來刪除它。如果密鑰的性質已知,則可以進行排序以消除這種情況。 – Anupdas 2013-04-29 16:28:51

+0

好的。我建議刪除第一個解決方案或修改它以包含排序,以免人們直接複製粘貼代碼。 – Mar0ux 2013-04-29 16:31:20

0

你可以嘗試:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
//cell initialization code 
NSString *title = [keys objectAtIndex:indexPath.row]; 
cell.textLabel.text = title; 
cell.detailTextLabel.text = [dictionaryOfWebsites objectForKey:title]; 

return cell; 
} 
在這種情況下

聲明鍵陣列作爲一個屬性。

相關問題