Swift, если #available не работает должным образом? - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть общая платформа, которая работает как в iOS, так и в MacOS, и я столкнулся с ситуацией, когда в MacOS Catalina мне нужно сделать дополнительную проверку. Я думал, что с помощью swift #available это будет работать:

    if #available(OSX 10.15, *){
       /// My Catalina Code
     }

Правда в том, что этот код передается в iOS. Будет ли это ошибкой или не будет использоваться таким образом?

Ответы [ 3 ]

2 голосов
/ 12 апреля 2020

Если вы просматриваете документацию Apple , это должно быть так.

if #available(macOS 10.15, *){
       /// My Catalina Code
     }
2 голосов
/ 12 апреля 2020

это должно выглядеть так:

    if #available(macCatalyst 10.15, *) {
        // use 10.15
    } else {

    }

, если вы используете Catalyst.

кроме этого нет ничего, что показывает, почему ваш фрагмент кода не работает.

0 голосов
/ 12 апреля 2020

Вам может понадобиться использовать условную компиляцию вместе с #available:

        #if os(macOS)
        if #available(macOS 15.0, *) {
            //...
        }
        #endif

или уродливым обходным решением:

        if #available(macOS 15.0, iOS 9999.99, *) {
            //...
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...