1. ホーム
  2. ios

[解決済み] コンパイラはこの式の型チェックを行うことができません。

2023-06-03 17:33:14

質問

xCodeをアップデートした後、私のコードにこのエラーが発生しました。

コンパイラはこの式を合理的な時間で型チェックすることができません。 式を個別のサブ式に分割してください。

コードです。

//check popup in window frame

let spaceFromLeftSide = cutOutViewX.constant + cutOutViewWidth.constant/2 - (options.textWidth + padding*2)/2

if spaceFromLeftSide < 0{

    if options.side == .bottom {
        messageRightSpaceFromBottomDot.constant -= spaceFromLeftSide - padding
    }
    else if options.side == .top{
        messageRightSpaceFromTopDot.constant += spaceFromLeftSide - padding
    }
}

let spaceFromRightSide = cutOutViewX.constant + cutOutViewWidth.constant/2 + (options.textWidth + padding*2)/2

if spaceFromRightSide > targetView.frame.size.width{

    if options.side == .bottom {
        messageRightSpaceFromBottomDot.constant -= spaceFromRightSide - ( targetView.frame.size.width )
    }
    else if options.side == .top{
        messageRightSpaceFromTopDot.constant += spaceFromRightSide - ( targetView.frame.size.width )
    }
}

行のエラー:

let spaceFromRightSide = cutOutViewX.constant + cutOutViewWidth.constant/2 + (options.textWidth + padding*2)/2

これを修正する方法は?

どのように解決するのですか?

<ブロッククオート

コンパイラは、この式を適切な時間でタイプチェックすることができません。この式を個別のサブ式に分割してみてください。

このエラーは、Swiftコンパイラが式の計算が長いと判断したときに表示されます。詳しくは ここをチェック

これを解決するには、式をより小さなパーツに分割すればよいのです。ちょうど、このような感じです。

let cutOutxOrigin = 3 * cutOutViewX.constant / 2
let actualPadding = (options.textWidth + padding * 2) / 2

let spaceFromRightSide = cutOutxOrigin + actualPadding