Простой метод делегирования приложения для отображения UIAlertController (в Swift)

В obj-C, когда другое приложение iOS (почтовое вложение, веб-ссылка) было связано с файлом или ссылкой, связанной с моим приложением. Я бы тогда поймал это на openURL илиdidFinishLaunchingWithOptions и показатьUIAlertView чтобы подтвердить, что пользователь хочет импортировать данные. Теперь, когдаUIAlertView обесценивается, я пытаюсь сделать то же самое, но не совсем уверен, как лучше это сделать?

У меня возникают проблемы с отображением простого предупреждения, когда мое приложение получает данные из другого приложения. Этот код прекрасно работал в Objective-C сUIAlertView:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    if (url)
    {
        self.URLString = [url absoluteString];
        NSString *message = @"Received a data exchange request. Would you like to import it?";
        importAlert = [[UIAlertView alloc] initWithTitle:@"Data Received" message:message delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
        [importAlert show];
    }

    return YES;
}

Но когда я пытаюсь переключиться наUIAlertViewController и Свифт, я не могу найти простой способ показать сообщение:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
    let URLString: String = url.absoluteString!
    let message: String = "Received data. Would you like to import it?"

    var importAlert: UIAlertController = UIAlertController(title: "Data Received", message: message, preferredStyle: UIAlertControllerStyle.Alert)
    importAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
    importAlert.addAction(UIAlertAction(title: "Ok", style: .Default, handler:
    { action in
        switch action.style {
        case .Default:
            println("default")  
        case .Cancel:
            println("cancel")   
        case .Destructive:
            println("destructive")
        }
    }))

    self.presentViewController(importAlert, animated: true, completion: nil)
    return true
}

Я получаю ошибку времени компиляцииAppDelegate не имеет члена с именемpresentViewController

Я видел некоторые запутанные методы, чтобы получитьAppDelegate отображатьUIAlertViewController на StackOverflow, но я надеялся, что было что-то немного проще.

Все, что мне действительно нужно, это показать пользователю быстрое сообщение о том, что он получил некоторые данные, и попросить их решить, что они хотят с ним делать. Когда приложение будет готово, оно продолжит открываться и появится на переднем плане (аналогичный код вdidFinishLaunchingWithOptions для холодного запуска) либо с добавлением новых данных, либо без учета выбора предупреждений.

Я мог бы отметить глобальную переменную, которую я проверяю во всех моихviewWillAppear Func, но это будет много дублирования, так как у меня более 30 просмотров.

Дайте мне знать, если у вас есть идеи.

Спасибо

Greg

Ответы на вопрос(5)

Ваш ответ на вопрос