동일한 문제가있어서 임시 해결책을 마련했습니다. NSManagedObject
을 서브 클래스 화하고 이미지 속성에 대한 접근 자 메서드를 재정 의하여 UIImage
을 수동으로 변환하십시오.
- 는 세터 방법에서,
NSData
인스턴스에 UIImage
객체를 변형하고 관리하는 오브젝트의 이미지 속성을 설정. - getter 메서드에서 이미지 속성의 데이터를 변환하고
UIImage
의 인스턴스를 반환합니다.
의 작동하도록하자 : 데이터 모델에서
, 당신은 속성, "이미지"를 클릭하면 값 변압기 이름의 텍스트를 삭제합니다. 기본값은 입니다. NSKeyedUnarchiveFromData은 현재 원하는 것입니다.
다음으로 데이터 모델에서 엔티티의 하위 클래스를 클릭하여 새 파일을 클릭하십시오. 엔티티를 선택하면 코코아 터치 클래스에 "Managed Object Class"라는 새 클래스가 나타납니다. 을 클릭 한 다음을 클릭하고 을 다시 클릭하여 파일의 위치를 그대로 둔 다음을 다시 입력 한 다음 하위 클래스로 지정할 모든 엔티티 옆에 확인 표시를하십시오.당신의 서브 클래스 NSManagedObject
의 구현 파일에서
, 다음 두 가지를 포함하여 이미지 속성의 접근 자 메소드를 오버라이드 (override) : 오히려
object.image = [UIImage imageNamed:@"icon.png"];
:
- (void)setImage:(UIImage *)image {
[self willChangeValueForKey:@"image"];
NSData *data = UIImagePNGRepresentation(image);
[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;
}
을 그런 다음 이미지 사용을 설정할 때마다 이상 :
[object setValue:[UIImage imageNamed:@"icon.png"] forKey:@"image"];
이미지 사용 :
UIImage *myImage = object.image;
보다는 :
UIImage *myImage = [object valueForKey:@"image"];