簡體   English   中英

如何將NSDictionary數據放入UITableView

[英]How to get NSDictionary data into a UITableView

我想在NSDictionary中將2個NSArray鏈接在一起,以便每個providerName都有一個與其關聯的providerId

我期望使用self.providersDict = [NSDictionary dictionaryWithObjects:providerName forKeys:providerId];將兩個數組相互關聯self.providersDict = [NSDictionary dictionaryWithObjects:providerName forKeys:providerId]; 然后將providerName顯示為表格單元格標題,將id顯示為表格單元格字幕。

目前,我無法獲得顯示在UITable上的數據,甚至無法使用以下方法注銷字典:

   for (id key in self.providersDict) {
    NSLog(@"key: %@, value: %@", key, [self.providersDict objectForKey:key]);
}

在.h中聲明:

NSArray *providerName;
NSArray *providerId;

@property (nonatomic, strong) NSDictionary *providersDict;

並在viewDidLoad中:

    providerName = [NSArray arrayWithObjects:@"provider1", @"provider2", @"provider3", nil];
    providerId = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];

    self.providersDict = [NSDictionary dictionaryWithObjects:providerName
                                                           forKeys:providerId];

UITable方法:

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [[self.providersDict allKeys] count];
}


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{



 static NSString *unifiedID = @"aCellID";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:unifiedID];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:unifiedID];

}

for (id key in self.providersDict) {
    NSLog(@"key: %@, value: %@", key, [self.providersDict objectForKey:key]);
}

NSString *providerNameString = [self.providersDict objectForKey:@"provider"];
NSString *providerIdString = [self.providersDict objectForKey:@"object"];
cell.textLabel.text  = providerNameString;
cell.detailTextLabel.text  = providerIdString;


return cell;

}

謝謝您的幫助。

NSString *providerNameString = [self.providersDict objectForKey:@"provider"];
NSString *providerIdString = [self.providersDict objectForKey:@"object"];

你已經初始化按鍵1,2,3 self.providersDict所以你應該嘗試獲取providerNameString使用這些按鍵,而不是@"provider"同為providerIdString

嘗試

NSString *key = [self.providersDict allKeys][indexPath.row];

NSString *providerNameString = self.providersDict[key];
NSString *providerIdString = key;
cell.textLabel.text  = providerNameString;
cell.detailTextLabel.text  = providerIdString;

並且不要忘了調用[tableView reloadData]; 一旦您的self.providersDict被初始化。

至於建議,為什么不使用ID,名稱和其他信息為Provider創建模型類。 您可以將每個提供程序添加到一個數組中,這將使您的生活更加輕松。

為了您的目的,您不需要任何NSDictionary ,只需使用兩個NSArrays填充UITableView的數據

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    static NSString *unifiedID = @"aCellID";
    UITableViewCell *cell = 
    [tableView dequeueReusableCellWithIdentifier:unifiedID];

    if (!cell) 
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:unifiedID];  
    }

    NSString *providerNameString = [providerName objectAtIndex:indexPath.row];
    NSString *providerIdString = [providerId objectAtIndex:indexPath.row];
    cell.textLabel.text  = providerNameString;
    cell.detailTextLabel.text  = providerIdString;
    return cell;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM