MBManagedSquare
및 MBManagedCircle
이라는 하위 클래스가 NSManagedObject
이라고 가정 해 보겠습니다. MBManagedSquare
및 MBManagedCircle
은 방법 prepareFromDictionary:(NSDictionary*)dic
을 정의하며 두 가지 구현이 서로 다릅니다. Objective C로 캐스팅
NSString *type = // could be @"MBManagedSquare" or @"MBManagedCircle"
NSEntityDescription *desc = [NSEntityDescription entityForName:type inManagedObjectContext:_context];
NSManagedObject *object = [[NSManagedObject alloc] initWithEntity:desc insertIntoManagedObjectContext:_context];
그래서이 코어 데이터와 함께있을 것입니다 엔티티의 유형이
type
문자열을 통해 동적으로 결정됩니다
는이 코드를 말한다. 그래서 제가 아는 것은 그것이
NSManagedObject
이라는 것입니다.
내가 원하는 것은 올바른 수업을 위해 prepareFromDictionary:
방법을 사용하는 것입니다.
그래서 타입을 "MBManagedSquare"인 경우, 내가 MBManagedSquare
에 개체를 캐스팅하고 내가하고 시도 무엇
[castedObject prepareFromDictionary:dic];
를 호출 할
은 다음과 같습니다Class class = NSClassFromString(type);
class *castedObject = (class*)object;
하지만 나는를 얻을 수 예상 된 표현 오류. 이것이 가능한지 확실하지 않습니다. 어떻게하면 좋을까요?
당신은 iVar를 iVar로 캐스팅하고 있습니다. 그거 이상 하네. 캐스트에서 대문자 클래스를 사용하고 참조 연산자 (*)를 제거하십시오. 물론 모든 객체가'-class'에 응답한다고 생각하면, 그 이유는 모르겠다. – CodaFi
@CodaFi 이것도 작동하지 않는다 : Class class = NSClassFromString (type); class * castedObject = (Class) object; ' – Snowman