Objective C如何实现GKState的isValidNextState
How to implement GKState's isValidNextState in Objective C
似乎 GameplayKit 的所有示例总是在 Swift 中。我决定暂时不转移到 swift,我只是将大量代码翻译成 Objective C,大部分时间都很好。
我正在尝试从 GKState
class 中实现 isValidNextState
方法,但我收到 switch 语句的错误,我不确定它是什么想要...在 Swift 中似乎没问题,但在 obj C 中却不行。我得到的错误是:
错误:Statement requires expression of integer type('__unsafe_unretained Class _Nonnull' invalid
我应该在 switch 语句中包含什么而不是 stateclass
?
-(BOOL) isValidNextState:(Class)stateClass {
switch (stateClass) { //ERROR ON THIS LINE
case [InvulnerableState class]: //not sure what this should be either
return YES;
break;
default:
break;
}
return NO;
}
这是 Swift 中的等价物,效果很好:
override func isValidNextState(stateClass: AnyClass) -> Bool {
switch stateClass {
case is InvulnerableState.Type:
return true
default:
return false
}
}
您的 isValidNextState
方法应该是:
- (BOOL)isValidNextState:(Class)stateClass {
return stateClass == [InvulnerableState class];
}
如果你有多个下一个有效状态,它应该是,例如:
- (BOOL)isValidNextState:(Class)stateClass {
return stateClass == [InvulnerableState class] ||
stateClass == [InvulnerableState2 class];
}
似乎 GameplayKit 的所有示例总是在 Swift 中。我决定暂时不转移到 swift,我只是将大量代码翻译成 Objective C,大部分时间都很好。
我正在尝试从 GKState
class 中实现 isValidNextState
方法,但我收到 switch 语句的错误,我不确定它是什么想要...在 Swift 中似乎没问题,但在 obj C 中却不行。我得到的错误是:
错误:Statement requires expression of integer type('__unsafe_unretained Class _Nonnull' invalid
我应该在 switch 语句中包含什么而不是 stateclass
?
-(BOOL) isValidNextState:(Class)stateClass {
switch (stateClass) { //ERROR ON THIS LINE
case [InvulnerableState class]: //not sure what this should be either
return YES;
break;
default:
break;
}
return NO;
}
这是 Swift 中的等价物,效果很好:
override func isValidNextState(stateClass: AnyClass) -> Bool {
switch stateClass {
case is InvulnerableState.Type:
return true
default:
return false
}
}
您的 isValidNextState
方法应该是:
- (BOOL)isValidNextState:(Class)stateClass {
return stateClass == [InvulnerableState class];
}
如果你有多个下一个有效状态,它应该是,例如:
- (BOOL)isValidNextState:(Class)stateClass {
return stateClass == [InvulnerableState class] ||
stateClass == [InvulnerableState2 class];
}