Похоже, вы сохраняете изображение в виде NSImage на рабочем столе, и этот объект не существует на iPhone. Ваше настольное приложение должно хранить изображение в портативном виде, в формате PNG или JPG и т. Д. Затем вы сможете загрузить его обратно в приложение для iPhone как UIImage.
Обновление повторно трансформируется
Похоже, вы все еще передаете NSImage атрибуту, и он думает, что вы обрабатываете его данные. Сначала необходимо преобразовать его в «стандартный» формат, например:
NSBitmapImageRep *bits = [[myImage representations] objectAtIndex: 0];
NSData *data = [bits representationUsingType:NSPNGFileType properties:nil];
[myManagedObject setImage:data];
Я рекомендую написать специальные средства доступа для этого, например:
#ifdef IPHONEOS_DEPLOYMENT_TARGET
- (void)setImage:(UIImage*)image
{
[self willChangeValueForKey:@"image"];
NSData *data = UIImagePNGRepresentation(image);
[myManagedObject setImage:data];
[self setPrimitiveValue:data forKey:@"image"];
[self didChangeValueForKey:@"image"];
}
- (UIImage*)image
{
[self willAccessValueForKey:@"image"];
UIImage *image = [UIImage imageWithData:[self primitiveValueForKey:@"image"];
[self didAccessValueForKey:@"image"];
return image;
}
#else
- (void)setImage:(NSImage*)image
{
[self willChangeValueForKey:@"image"];
NSBitmapImageRep *bits = [[image representations] objectAtIndex: 0];
NSData *data = [bits representationUsingType:NSPNGFileType properties:nil];
[myManagedObject setImage:data];
[self setPrimitiveValue:data forKey:@"image"];
[self didChangeValueForKey:@"image"];
}
- (NSImage*)image
{
[self willAccessValueForKey:@"image"];
NSImage *image = [[NSImage alloc] initWithData:[self primitiveValueForKey:@"image"]];
[self didAccessValueForKey:@"image"];
return [image autorelease];
}
#endif
Это даст вам условную компиляцию и сохранит данные в виде NSData (в формате PNG), которые можно получить на любом устройстве.