0

GameplayKit のすべての例は常に Swift にあるようです。私は今のところ、swift に移行しないことに決めました。多くのコードを Objective C に変換しているだけなので、ほとんどの場合は問題ありません。

isValidNextStateクラスからメソッドを実装しようとしGKStateていますが、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
    }
}
4

1 に答える 1

2

あなたのisValidNextState方法は次のとおりです。

- (BOOL)isValidNextState:(Class)stateClass {
  return stateClass == [InvulnerableState class];
}

次の有効な状態が複数ある場合は、たとえば次のようになります。

- (BOOL)isValidNextState:(Class)stateClass {
  return stateClass == [InvulnerableState class] ||
         stateClass == [InvulnerableState2 class];
}
于 2016-12-28T08:37:52.413 に答える