-1

我的 ViewController 中有一个表,在这个表中我将从 webService 和 CoreData 获取一些信息,这些信息出现在每一行中,当我在每一行中按下时,我想转到详细视图并创建图像,

我有卡片,每张卡片都有不同的印章,当我要查看详细信息时,我想创建这些图像,我的意思是,如果我的卡有 2 个印章,我想创建 2 个图像,如果有 3 个印章,我想创建 3 个图像,

请您在此实施中帮助我,在此先感谢!

这是我从网络服务获得的信息:

createdAt = 1362412409;
id = 2;
stampNumber = 2;
   },
   {
        createdAt = 1362069567;
        id = 1;
        stampNumber = 10;
   }

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
    *)indexPath
{
    static NSString *CellIdentifier = @"CardsCell";
    CardCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];    
    if (cell == nil){
         NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"CardCell" owner:nil 
    options:nil];
        for (id currentObject in objects)
                    {
                        if([currentObject isKindOfClass:[UITableViewCell class]])
                        {
                            cell = (CardCell *) currentObject;

                            break;
                        }
                    }
    }
    card = self.cards[indexPath.row];

    cell.stampId.text = [[NSString alloc] initWithFormat:@"%@",card.stampNumber];
    cell.createdAt.text = [[NSString alloc] initWithFormat:@"%@",card.createdAt];
    cell.CardId.text = [[NSString alloc] initWithFormat:@"Carte %d",(indexPath.row+1)];
    return cell;

}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
     *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    [[NSNotificationCenter defaultCenter] postNotificationName:@"cardDetail" object:nil 
    userInfo:nil];
}

我的问题是我应该如何根据我的印章以编程方式创建这些图片..

编辑: 我有这张图片:

UIImageView *stampIMG = [[UIImageView alloc] initWithFrame:self.view.frame];
stampIMG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.jpg"]];
stampIMG.frame = CGRectMake(0, 0, 122, 122);

我只想使用这张图片

4

1 回答 1

0

您应该存储图像位置的路径,而不是图像的 NSData。然后使用 stampId 获取该图像路径并加载到您的图像中。如果图像在服务器上,则下载图像。您可以将图像作为 NSData 存储在 CoreData 中,但这个 blob 可能很大,这就是为什么通常最好只存储图像的路径。因此,在 CoreData 中,您可以拥有一个具有 stampId 和 ImagePath 的对象 Stamp。然后通过 stampId 获取对象,然后从对象中获取 imagePath。

我可能会尝试这样的事情来通过戳 id 获取图像。如果您的图像已下载,则替换文档目录与主包。

NSFetchRequest * stampById = [[NSFetchRequest alloc] init];
[stampById setEntity:[NSEntityDescription entityForName:@"Card" inManagedObjectContext:self.managedObjectContextBKG]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"stampId == %@", stampId];
[stampById setPredicate:predicate];

NSError *error = nil;
NSArray * stampResults = [self.managedObjectContext executeFetchRequest:stampById error:&error];

if(nil != stampResults && [stampResults count]){
    Stamp *stamp = [stampResults objectAtIndex:0];
    UIImage *image = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource: stamp.imagePath ofType:@"png"]];
} 
于 2013-03-07T17:55:36.927 回答