2013-03-06 4 views
5

में NSDictionary डेटा प्राप्त करने के लिए कैसे मैं 2 NSArrays है कि मैं इतना है कि प्रत्येक ProviderName एक providerId इसके साथ जुड़े है एक NSDictionary में एक साथ लिंक करने के लिए कोशिश कर रहा हूँ है।एक UITableView

मुझे उम्मीद है कि दो एरे self.providersDict = [NSDictionary dictionaryWithObjects:providerName forKeys:providerId]; का उपयोग करके एक दूसरे के साथ जुड़ने की उम्मीद है और फिर प्रदाता नाम तालिका सेल शीर्षक और आईडी तालिका तालिका उपशीर्षक के रूप में प्रदर्शित किया जाएगा।

पल मैं डेटा uitable पर प्रदर्शित नहीं मिल सकता है या यहां तक ​​कि का उपयोग कर शब्दकोश लॉग आउट में:

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

ज में घोषणा की:

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; 

} 

सहायता के लिए धन्यवाद।

+0

आपकी आवश्यकता क्या है में डेटा को भरने के लिए दो NSArrays का उपयोग की जरूरत नहीं है? क्या आप कृपया मुझे समझा सकते हैं? –

+0

मैंने सोचा था कि उपर्युक्त काम करेगा। मुझे उम्मीद है कि दो arrays एक दूसरे के साथ self.providersDict = [NSDictionary dictionaryWithObjects: प्रदाता नाम के लिए एक के साथ जुड़े होने की उम्मीद है: प्रदाता आईडी]; और उसके बाद प्रदाता नाम तालिका सेल शीर्षक और आईडी तालिका तालिका उपशीर्षक के रूप में प्रदर्शित किया जाना है। nslog कथन नहीं चला था। मुझे यकीन नहीं है क्यों। – hanumanDev

+0

मुझे लगता है कि आपके प्रदाताओं में "ऑब्जेक्ट" और "प्रदाता" नामक कुंजी नहीं है, कुंजी 1,2,3 हैं? और जब आप लॉग के लिए करने की कोशिश कर रहे हैं तो आप शब्दकोश को गणना नहीं कर सकते .... – Ankit

उत्तर

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

आप चाबियाँ 1, 2, साथ self.providersDict प्रारंभ कर दिया है 3. तो तुम उन कुंजियों और नहीं @"provider"providerIdString के लिए एक ही का उपयोग कर providerNameString लाने के लिए प्रयास करना चाहिए।

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 आरंभ नहीं हो जाता।

एक सुझाव के रूप में आप आईडी, नाम और अन्य जानकारी के साथ Provider के लिए मॉडल क्लास क्यों नहीं बनाते। आप प्रत्येक प्रदाता को सरणी में जोड़ सकते हैं और आपके जीवन को बहुत आसान बना देंगे।

+0

कहा जा रहा है! :) – hanumanDev

+0

आप पहले से ही मुझे उत्साहित करके धन्यवाद दिया है। लेकिन फिर यदि आप प्रदाता के लिए मॉडल ऑब्जेक्ट बनाने का प्रयास कर सकते हैं :) – Anupdas

-2

अपने उद्देश्य के लिए, यदि आप किसी भी NSDictionary, बस 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; 
}