2014-08-27 43 views
0

我是Xcode和Objective-c的新手,我想製作一個按字母順序排序的聯繫人列表,其中也有圖像。請檢查this以供參考。在已排序的UITableViewCell上添加來自MySQL數據庫的圖像

此代碼告訴我我需要的一切,但問題是我使用MySQL的名稱和圖像,而不是像這樣的硬編碼。

我已導入數據到NSDictionary中,這是結果:

audiences=({name="ABDUL",id="1",photo="asd.png"},{name="ABDUL",id="2",photo="qwe.png"}); 

什麼,我需要做的添加姓名和照片(只有2項,沒有ID)來定義UITableViewCell? 我使用this代碼之前,但只顯示排序的名稱,我不知道如何調用圖像。

這是我如何解析名稱,這樣我就可以抓住它的名單:

NSMutableDictionary* audict = [NSMutableDictionary dictionary]; 
       for (NSDictionary* person in dataDict[@"audience"]){ 
        NSString* name = person[@"name"]; 
        if (![name length]) 
        continue; 
        NSRange range = [name rangeOfComposedCharacterSequenceAtIndex:0]; 
        NSString* key = [[name substringWithRange:range] uppercaseString]; 
        NSMutableArray* list = audict[key]; 
        if (!list){ 
        list = [NSMutableArray array]; 
        [audict setObject:list forKey:key]; 
        } 
        [list addObject:name]; 

        audiences=audict; 
        audienceSectionTitles = [[audiences allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 
        audienceIndexTitles = @[@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z"]; 

這是代碼執行

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    NSString *sectionTitle = [audienceSectionTitles objectAtIndex:section]; 
    NSArray *sectionAudience = [audiences objectForKey:sectionTitle]; 
    return [sectionAudience count]; 
} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    return [audienceSectionTitles objectAtIndex:section]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 

    // Configure the cell... 
    NSString *sectionTitle = [audienceSectionTitles objectAtIndex:indexPath.section]; 
    NSArray *sectionAudience = [audiences objectForKey:sectionTitle]; 
    NSString *audience = [sectionAudience objectAtIndex:indexPath.row]; 
    UIFont *myFont = [ UIFont fontWithName: @"Helvetica" size: 12.0 ]; 
    cell.textLabel.font = myFont; 
    cell.textLabel.text = audience; 
    cell.imageView.image = [UIImage imageNamed:[self getImageFilename:audience]]; 
    return cell; 
} 

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 
{ 
    return audienceIndexTitles; 
} 

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index 
{ 
    return [audienceSectionTitles indexOfObject:title]; 
} 

在這裏,我需要把我的形象字符串:

- (NSString *)getImageFilename:(NSString *)audience 
{ 
    NSString *imageFilename = @"profile.png"; 

    return imageFilename; 
} 

請我需要你的幫助^^;

回答

0

數據庫上的圖像是?你的意思是MySQl,你使用的是sqlite還是Core Data? 這是SQLite,讓一個簡單的選擇代碼:

const unsigned char *myBlob = sqlite3_column_blob(sqlite3_stmt *, column); if(myBlob != NULL){ value = [NSString stringWithUTF8String:(const char *)myBlob]; }

+0

號我用PHP的Web服務來獲取從MySQL數據庫中的數據,我沒有使用任何sqlite的或CoreData 。但是,我不認爲這是問題,因爲我已經獲取所有數據並將其放入NSDictionary中。這是字典表明{觀衆=({ 名= ABDUL; ID = 1; 相片= 0192038409.jpg },{ 名稱= ELSA; ID = 2; 相片= 647263846.jpg } ,. ..etc)} @DavidBemerguy – Edward 2014-08-27 08:29:26

+0

你的意思是你從ws中檢索的字典會帶給你圖像的名字?而不是其數據? – 2014-08-27 13:10:13

+0

編號ws帶來上述數據。然後我創建另一個字典,只有名稱(我跟着教程),然後用戶想要的圖像也添加到列表中。但我不知道如何添加基於他們的名字或ID的圖像。請幫助@DavidBemerguy – Edward 2014-08-28 01:54:13

相關問題