Xcode продолжает выдавать .signUp доступен только в iOS 13.2. Это какая-то ошибка XCode? - PullRequest
1 голос
/ 13 февраля 2020

Я использую Xcode 11.3.1 и пытаюсь реализовать «Войти через Apple». Но XCode продолжает выдавать эту ошибку. Я пытался восстановить, чистое построение своего проекта, но, похоже, ничего не работает.

Я хочу сделать следующее: если на устройстве установлено iOS 13.2, отображается сообщение «зарегистрироваться с яблоком», в противном случае отображается знак « Кнопка «с яблоком», так как тип: регистрация доступна в 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
}()

This is the error message

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Используйте функцию вместо вычисляемого свойства, чтобы обойти эту проблему.

@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)
    }
}
0 голосов
/ 13 февраля 2020
ASAuthorizationAppleIDButton.ButtonType.signUp

действительно доступен только в iOS 13.2+, согласно документации Apple:

SDKs

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

ASAuthorizationAppleIDButton signUp Enumeration Case

...