xcode 共享Zip文件

mgdq6dx1  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(157)

我有一个名为airdropme.zip的文件要包含在我的应用程序捆绑包中,我想让它可以通过AirDrop共享。下面的函数会弹出一个对话框,其中显示了文件名,但当我共享它时,传输的文件不是有效的zip存档;它不是airdropme.zip。我曾尝试将airdropme.zip放在Assets.xcassets文件夹中,但不起作用。我该将airdropme.zip放在哪里?我该如何更改该函数,以便在被调用时通过AirDrop共享airdropme.zip

@IBAction func airdropMyFile() {
        let fileURL = NSURL(fileURLWithPath: "airdropme.zip")
        var filesToShare = [Any]()
        filesToShare.append(fileURL)
        let activityViewController = UIActivityViewController(activityItems: filesToShare , applicationActivities: nil)
        activityViewController.popoverPresentationController?.sourceView = self.view
        self.present(activityViewController, animated: true, completion: nil)
    }

函数在Assets.xcassets文件夹中找不到该文件。

brc7rcf0

brc7rcf01#

如果zip文件位于应用的资源包中,则您可以按如下方式获取其URL:

let fileURL = Bundle.main.url(forResource: "airdropme", withExtension: "zip")!

强制解包结果是很好的,因为一旦你让它在开发中工作,它就永远不会失败。如果这行代码在开发过程中崩溃,那就意味着airdropme.zip文件没有在你的应用资源包中结束。转到你的目标的“构建阶段”,在“复制包资源”部分下查看,确保airdropme.zip文件被列出。
您发布的代码现在变为:

@IBAction func airdropMyFile() {
    let fileURL = Bundle.main.url(forResource: "airdropme", withExtension: "zip")!
    let activityViewController = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)
    activityViewController.popoverPresentationController?.sourceView = self.view
    self.present(activityViewController, animated: true)
}

还要注意,在Swift中没有理由使用NSURL,使用URL
FYI -当你试图创建一个带有文件路径的URL(或NSURL)时,你应该传递一个完全限定的文件路径,而不仅仅是一个文件名。

相关问题