iOS / Programming / Swift

エラーと解決方法 – iOS Swift

Unexpected failure

Xcode左上の一番右をクリックするとBuildに「×」がついていると思うので、そこを押すと詳細が表示されます。

resources-to-copy: Operation not permitted

User Script SandboxingをNoに設定すれば解決します。
これ自体がなんなのかはこちらの方が詳しく書いてくれています。

画面中央のBasic, Signing & CapabilitiesなどからAllを選択しないと表示されないかもしれないので、気をつけてください。

Google Maps SDKによってプレビューが表示されない

EditorのCanvasから「Use Legacy Previews Execution」にチェックを入れればOKです。

Cannot declare conformance to ‘NSObjectProtocol’ in Swift; ‘AppDelegate’ should inherit ‘NSObject’ instead

AppDelegateがNSObjectProtocolに準拠していた目に起こるエラーです。

NSObjectを継承するだけでもエラーは解決しますが、AppDelegateでは、NSObjectを継承しているUIResponderを継承することがSwiftの習慣になっているため、UIResponderを継承した方が良いです。

class AppDelegate : UIResponder, UIApplicationDelegate {
  // 略
}

画面が真っ黒 – Black Screen

Targets > info > Enable Multiple Windows を YES -> NO に変更したら直りました。NO -> YES に再度変更しても問題ないのでなぜかはわかりません。

Enum SwitchのEquatableエラー

Instance method ‘関数名’ requires that ‘Enum名’ conform to ‘Equatable’
私の場合はonChangeでこれに出会しました。

EnumをEquatableに準拠させるため、全部比較!

// 元のEnum
internal enum UIState {
    case loading
    case failed
    case succeed(dataType: DataType)
}

// Equatableに準拠
 extension UIState: Equatable {
    static func == (lhs: UIState, rhs: UIState) -> Bool {
        switch (lhs, rhs) {
            case (loading, loading):
                return true
            case (loading, failed):
                return false
            case (loading, succeed):
                return false
                
            case (failed, loading):
                return false
            case (failed, failed):
                return true
            case (failed, succeed):
                return false
                
            case (succeed, loading):
                return false
            case (succeed, failed):
                return false
            case (succeed, succeed):
                return true
        }
    }
 }

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です