2014-04-21 5 views
0

Core Data를 사용하는 iPad 앱이 있습니다. 내 데이터 모델에는 HubBrand라는 객체가 있고 XCode를 사용하여 NSManagedObects를 생성했습니다.NSManagedObject를 채울 때 인식 할 수없는 선택기

헤더 :

@class HubModel; 

@interface HubBrand : NSManagedObject 

@property (nonatomic, retain) NSString * brandName; 
@property (nonatomic, retain) NSSet *relModels; 
@end 

@interface HubBrand (CoreDataGeneratedAccessors) 

- (void)addRelModelsObject:(HubModel *)value; 
- (void)removeRelModelsObject:(HubModel *)value; 
- (void)addRelModels:(NSSet *)values; 
- (void)removeRelModels:(NSSet *)values; 

@end 

구현 : 나는 HubBrand 클래스의 인스턴스를 생성하고 foloowing 코드를 사용하여 채우기 위해 노력하고

@implementation HubBrand 

@dynamic brandName; 
@dynamic relModels; 

@end 

:

생성 된 객체는 다음과 같은 코드가 있습니다
HubBrand *brand = [[HubBrand alloc] init]; 
[brand setBrandName:[NSString stringWithFormat:@"_Custom:, %@", [_txtHubBrand text]]]; 
//brand.brandName = [NSString stringWithFormat:@"_Custom:, %@", [_txtHubBrand text]]; 

이렇게하면 다음 런타임 오류가 발생합니다. - [HubBrand setBrandName :] : 인스턴스로 전송 된 인식 할 수없는 선택 자

생성 된 관리 객체를 사용할 때 자체 설정자를 구현해야합니까? 왜이 오류가 발생하는지에 대한 단서가 있습니까? 감사!

답변

1

당신은 NSEntityDescription에 따라 NSManagedObjectContext를 사용하여 NSManagedObject의 하위 클래스의 인스턴스를 생성해야합니다

NSManagedObjectContext *managedObjectContext; // Get this from your Core Data stack, probably in the app delegate 
HubBrand *brand = [NSEntityDescription insertNewObjectForEntityForName:@"HubBrand" inManagedObjectContext:managedObjectContext]; 
[brand setBrandName:[NSString stringWithFormat:@"_Custom:, %@", [_txtHubBrand text]]]; 

이 더 많은 정보를위한 문서의 Creating, Initializing, and Saving a Managed Object 섹션을 참조하십시오.

NSEntityDescription *entity = [NSEntityDescription entityForName:@"HubBrand" inManagedObjectContext:managedObjectContext]; 
HubBrand *brand = [[HubBrand alloc] initWithEntity:entity insertIntoManagedObjectContext:managedObjectContext]; 

을하지만 좀 더 말의 :

또한 서브 클래스 이니셜 라이저를 사용할 수 있습니다!

1

NSManagedObject에 대해 지정된 초기화 도구를 호출하지 않아 유효한 개체를 얻지 못합니다. init을 사용하여 인스턴스를 만들 수 없으면 initWithEntity:insertIntoManagedObjectContext:을 사용해야합니다. insertNewObjectForEntityForName:inManagedObjectContext:이라는 NSEntityDescription의 생성자를 사용할 수도 있습니다.

관련 문제