我的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);
我只想使用此图片
答案 0 :(得分:0)
您应该存储图像位置的路径,而不是图像的NSData。然后使用stampId获取图像路径并加载图像。如果图像在服务器上,则下载图像。您可以将图像存储为CoreData中的NSData,但是这个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"]];
}