从NSMutableArray检索时未显示UIImage

时间:2011-06-01 15:15:33

标签: iphone core-data uiimageview nsmutablearray

请帮助:)

我已经设置了一个可变数组,如下所示

- (void)viewDidLoad {
[super viewDidLoad];


NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"TopImage"  inManagedObjectContext:managedObjectContext];
[request setEntity:entity];


NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"topImage" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptor release];
[sortDescriptors release];


NSError *error = nil;
NSMutableArray *mutableFetchResultsT = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResultsT == nil) {
}

[self setTopImageArray:mutableFetchResultsT];}

我试图使用以下方法填充UIImageView:

- (void)showPhoto:(NSInteger)numberToAdd
{

[topIV setImage:[topImageArray objectAtIndex:currentPI + numberToAdd]];

}

currentPI是一个整数,用于标记索引中的当前图像,并在此处设置要添加的数字:

- (IBAction)nextTouch
{
[self showPhoto:-1];

}

这将跳到下一张图片(感谢@XenElement获取此见解)。

根本没有图像加载到UIImageView中。

通过imagePickerController填充MutableArray。

以下是我的专用图像>数据数据>图像转换器类

@implementation Image2Data

+ (BOOL)allowsReverseTransformation {
return YES;
}

+ (Class)transformedValueClass {
return [NSData class];
}

- (id)transformedValue:(id)value {
return UIImagePNGRepresentation(value);
}

- (id)reverseTransformedValue:(id)value {
return [[[UIImage alloc] initWithData:value] autorelease];
}

@end

这是在我的托管对象类中初始化的:

+ (void)initialize {
if (self == [Images class]) {
    Image2Data *transformer = [[Image2Data alloc] init];
    [NSValueTransformer setValueTransformer:transformer forName:@"Image2Data"];
}
 }

提前感谢您提出任何建议

DetartrateD

我原先说的是:

[topImageArray insertObject:imageS atIndex:0];

更正为:

[topImageArray insertObject:imageS.topImage atIndex:0];

:))))大笑,我指着我的实体而不是它的属性啊,好好吸取教训!

1 个答案:

答案 0 :(得分:1)

您不太可能将图像存储为UIImage对象。在存储之前,您必须将其转换为NSData对象。在将UIImage实例设置为initWithData:之前,您必须使用UIImageView将其转换回{{1}}对象。