从数据库获取URL并将其作为UITableView的图像

时间:2014-02-12 12:31:19

标签: ios iphone objective-c uitableview

全部,

我需要将图片分配给UITableView。每行都有不同的图片。每行的数据来自一个数据库,该数据库上的一行有一个ID,另一个数据库中的ID是链接的,并且该表中有一个URL用于该图像。

所以在cellforRowAtIndexPath中我们有: NSDictionary * postValues = @ {@“myParam”:apt [@“barID”]};

    // Do any additional setup after loading the view, typically from a nib.
    self.client = [MSClient clientWithApplicationURLString:@"https://outnight-mobile.azure-mobile.net/" applicationKey:@"okYeRGfBagYrsbkaqWIRObeDtktjkF10"];
[self.client invokeAPI:@"photos"
                  body:postValues
            HTTPMethod:@"POST"
            parameters:nil
               headers:nil
            completion:^(id result, NSHTTPURLResponse *response, NSError *error) {
                if (error) {
                    NSLog(@"Error %@", error );
                } else
                {
                    NSString *string = [NSString stringWithFormat:@"%@", [result objectForKey:@"rows"]];
                    NSString *stringWithoutbracketsend = [string stringByReplacingOccurrencesOfString:@")" withString:@""];
                    NSString *stringWithoutbracketsfront = [stringWithoutbracketsend stringByReplacingOccurrencesOfString:@"(" withString:@""];
                    NSString *completion = [stringWithoutbracketsfront stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
                    NSString *newStr = [completion substringFromIndex:1];
                    NSString *finalstring = [newStr substringToIndex:newStr.length-(newStr.length>0)];
                    NSLog(@"%@", finalstring);
                    [cell.imageView setImageWithURL:[NSURL URLWithString:finalstring] placeholderImage:[UIImage imageNamed:@"greybox40.png"]];

                }
            }];

它从表中引入了url,这是JSON,我删除了所有标记以获得仅http://blag.com/bah.jpg的字符串'这很容易。 我正在使用SBWebImage将图像放在uitableview异步中,这也很好。将图像放在网址的每一行上的最佳方法是什么? SWITCH声明最好吗?最好使用一组URL,然后显示它们。是否最好从cellforIndexRowPath移动数据库连接?有人可以建议吗?

2 个答案:

答案 0 :(得分:0)

首先为uitableview创建一个自定义视图单元格。然后将图像,标签等子视图添加到自定义单元格中。从数据库获取数据到图像数组,ID的数组在tableview委托方法中使用cellforrowatindex代码。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {static NSString * CellIdentifier = @“Cell”;     if(tableView == myTableView){         FirstViewCustomCell * cell =(FirstViewCustomCell *)[myTableView dequeueReusableCellWithIdentifier:CellIdentifier];         if(cell == nil)         {             [[NSBundle mainBundle] loadNibNamed:@“FirstViewCustomCell”所有者:self                                         选项:无];             cell = customCell;             customCell = nil;         }
        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];       //从数据库中获取数据。       cell.customimage.image = [imagesarr objectatIndex:indexpath.row];       cell.textlabel.text = [arrayofID objectatIndex:indexpath.row]; }

答案 1 :(得分:0)

单独解析数据......在方法中然后

将图像存储在数组中。如果您想要前三个图像..

如果要在对象中保存图像的网址,然后保存数组..使用下面的代码

    for(int i=0;i<3;i++)
    {
    ImagesObject *Obj=[imagesArray objectAtIndex:i];

            [cell.userProfilePicImage setImageWithURL:[NSURL URLWithString:Obj.imageURLString]
                                     placeholderImage:[UIImage imageNamed:@"greybox40.png"]
                                            completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType)
             {
                 if (!error && image)
                 {

                 }
             }];
        }

        (or) if you are not saving in an object then use below code.

for(int i=0;i<3;i++)
    {

        NSString *imageURLString=[imagesArray objectAtIndex:i];

                [cell.userProfilePicImage setImageWithURL:[NSURL URLWithString:imageURLString]
                                         placeholderImage:[UIImage imageNamed:@"greybox40.png"]
                                                completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType)
                 {
                     if (!error && image)
                     {

                     }
                 }];
}

希望它对你有所帮助......