문제

나는 방법이 있을 수신하는 많은 다른 종의 개체고 결정한 그들과 함께 무엇을 할:

-(void)performAction:(NSObject *)myAction withItem:(Item *)myItem {

actionCount = -1;
NSLog(@"-- NEW ACTION ARRAY --");
if ([myAction isMemberOfClass:[Look class]]) {
    currentActionArray = [self createLookArray:(Look *)myAction item:myItem];
} else if ([myAction isMemberOfClass:[Use class]]) {
    currentActionArray = [self createUseArray:(Use *)myAction item:myItem];
} else if ([myAction isMemberOfClass:[Exit class]]) {
    currentActionArray = [self createExitArray:(Exit *)myAction item:myItem];
} else if ([myAction isMemberOfClass:[NSArray class]] ) {
    NSLog(@"--- CUSTOM ACTION --- %@", myAction);
    currentActionArray = (NSArray *)myAction;
} 
[self performNextAction];

}

하나의 네 가지고 올해는 여기:보를 사용 종료하거나 있기 때문입.처음 세 가지가 전송되 NSArrays,마지막은 이미 있기 때문입.

지금 할 때,나는 통과하 있기 때문입 여기에서 다른 곳에서,다음과 같다:

    NSArray *myAction = [[NSArray alloc] initWithObjects:myAction1, myAction2, nil];
[controller performAction:myAction withItem:nil];

...사용자 지정 작업을 호출되지 않기 때문에 읽습 myAction 로 NSCFArray 보다는 오히려 있기 때문입.When I try[myAction isMemberOfClass:[NSCFArray 스]]지 않을 인식한다.간단한 방법으로 작업을 얻을 수있는 순간에 그냥하다고 가정하지 않은 것의 모습,사용 또는 종이 있기 때문입(을 없애의 마지막이 다른 경우에,단지 그것을 떠날로 다른 사람),그러나 그 보인다 실수요.

누구나 알고 어떻게 다룰 수 있는 이?

감사합니다, -k.

도움이 되었습니까?

해결책

당신이 사용하실 수 있습니다 isKindOfClass:isMemberOfClass:.

첫 번째 하나의 반환에 대한 예 개체 중 하나 클래스의 인스턴스를 보낼 수 또는 하위 클래스로,그것은 그것이 될 수 있습 케이스 NSCFArray.

다른 팁

두 가지 가능성을 고려 가치가있:

NSCFArray 은 서브 클래스의 NSMutable 배열

당신이 사용할 수 있습 isKindOfClass 확인

if ([myAction isMemberOfClass:[Look class]]) {
    currentActionArray = [self createLookArray:(Look *)myAction item:myItem];
} else if ([myAction isMemberOfClass:[Use class]]) {
        currentActionArray = [self createUseArray:(Use *)myAction item:myItem];
} else if ([myAction isMemberOfClass:[Exit class]]) {
        currentActionArray = [self createExitArray:(Exit *)myAction item:myItem];
} else if ([myAction isKindOfClass:[NSArray class]] ) {
        NSLog(@"--- CUSTOM ACTION --- %@", myAction);
        currentActionArray = (NSArray *)myAction;
} 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top