использование ActivityController для обмена метками - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть следующий код

 let textToShare = "Check out the test original for \(String(describing: bookTitle.text))"

        if let myWebsite = URL(string: "https://apps.apple.com/us/app/sumizeit/id1327646115") {//Enter link to your app here
            let objectsToShare = [textToShare, myWebsite] as [Any]
            let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)

            //Excluded Activities
            activityVC.excludedActivityTypes = [UIActivity.ActivityType.airDrop, UIActivity.ActivityType.addToReadingList]

            activityVC.popoverPresentationController?.sourceView = sender
            self.present(activityVC, animated: true, completion: nil)
        }

Когда я пытаюсь поделиться текстом метки bookTitle.text, я получаю вывод Optional («Test»).Есть ли способ поделиться текстом UILabel с помощью UIActivityViewController?

1 Ответ

0 голосов
/ 21 сентября 2019

Я получаю вывод Необязательно («Тест»)

На самом деле, вы на правильном пути.За исключением того, что вам нужно "развернуть" это необязательное свойство .text.Вы можете сделать это разными способами.Одним из способов является принудительная распаковка (не рекомендуется в большинстве случаев!) Примерно так:

let textToShare = "Check out the test original for \(bookTitle.text!)"

Или еще один способ - использовать nil coalescing.Вот так:

let textToShare = "Check out the test original for \(bookTitle.text ?? "")"

Подробнее о Необязательная цепочка https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html

PS не нужно использовать String(describing:).Вы используете это обычно в print().

...