簡體   English   中英

Xcode 不斷給出 .signUp 僅在 iOS 13.2 中可用。 這是一些Xcode錯誤嗎?

[英]Xcode keeps giving .signUp is only available in iOS 13.2 . Is this some Xcode bug?

我正在使用 Xcode 11.3.1 並嘗試實現“使用 Apple 登錄”。 但是 Xcode 不斷給出這個錯誤。 我試過重建,清理我的項目,但似乎沒有任何效果。

我想要做的是 - 如果設備有 iOS 13.2,則顯示“用蘋果注冊”,否則顯示“用蘋果登錄”按鈕,因為 type:signup 在 iOS 13.2 或更新版本中可用。 這是我的代碼:

@available(iOS 13.0, *)
lazy var appleSignInButton:ASAuthorizationAppleIDButton = {
    let button : ASAuthorizationAppleIDButton
    if #available(iOS 13.2, *){
        button = ASAuthorizationAppleIDButton(type: .signUp, style: .black)
    }else{
        button = ASAuthorizationAppleIDButton(type: .signIn, style:.black)
    }
    button.addTarget(self, action: #selector(appleSignUP), for: .touchDown)
    return button
}()

這是錯誤信息

使用函數而不是計算屬性來解決此問題。

@available(iOS 13.0, *)
func getAppleSignInButton() -> ASAuthorizationAppleIDButton {
    let button: ASAuthorizationAppleIDButton
    if #available(iOS 13.2, *) {
        button = ASAuthorizationAppleIDButton(type: .signUp, style: .black)
    }else{
        button = ASAuthorizationAppleIDButton(type: .signIn, style: .black)
    }
    button.addTarget(self, action: #selector(appleSignUP), for: .touchDown)
    return button
}

如果需要,您也可以將其分開並保留惰性變量。

@available(iOS 13.0, *)
lazy var appleSignInButton: ASAuthorizationAppleIDButton = {
    let button = getSignUpOrInButton()
    button.addTarget(self, action: #selector(appleSignUP), for: .touchDown)
    return button
}()

@available(iOS 13.0, *)
private func getSignUpOrInButton() -> ASAuthorizationAppleIDButton {
    if #available(iOS 13.2, *) {
        return ASAuthorizationAppleIDButton(type: .signUp, style: .black)
    } else {
        return ASAuthorizationAppleIDButton(type: .signIn, style: .black)
    }
}
ASAuthorizationAppleIDButton.ButtonType.signUp

根據 Apple 的文檔,確實僅在 iOS 13.2+ 中可用:

SDKs

iOS 13.2+
macOS 10.15.1+
Mac Catalyst 13.2+
tvOS 13.1+

ASAuthorizationAppleIDButton 注冊枚舉案例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM