Фоновые задачи в Swift 3 - PullRequest
0 голосов
/ 10 июня 2018

Что является эквивалентом ответа на селектор для фоновых задач?Я нашел код в Objective-C.Я пытаюсь получить то же самое в Swift.

Вот код Objective-C:

if ([application respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)]){
    bgTaskId = [application beginBackgroundTaskWithExpirationHandler:^{
    })

Код Swift:

if application.responds(to: #selector(self.beginBackgroundTaskWithExpirationHandler)) {
    bgTaskId = application.beginBackgroundTask(expirationHandler: {() -> Void in
        print("background task \(UInt(bgTaskId!)) expired")
    })

Это говорит, что BackgroundTaskManager имеетнет члена 'beginBackgroundTaskWithExpirationHandler'.

Что именно мы можем воспроизвести в Swift 3?

1 Ответ

0 голосов
/ 10 июня 2018

Если вы не пытаетесь поддерживать iOS 3 или более раннюю версию, нет необходимости проверять наличие селектора, поскольку он был добавлен в iOS 4.0.

Но селектор Swift будет: beginBackgroundTask(expirationHandler:).

Вот простой трюк при попытке конвертировать Objective-C API в Swift.Вытащите документацию API в Xcode или онлайн.Выберите Objective-C API.Найдите метод, который вы хотите конвертировать.Затем переключите документацию на API Swift.В таком случае вы увидите тот же метод, но в Swift.

...