You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AirDrop分享airdropme.zip异常:文件位置与代码修改咨询

问题解决步骤

1. 文件存放位置调整

  • 不要把airdropme.zip放在Assets.xcassets里,这个目录是专门管理图像、颜色等资源资产的,无法直接通过文件URL访问。
  • 直接将airdropme.zip拖到Xcode项目的根目录(或任意普通文件夹),拖入时确保勾选**"Copy items if needed",并且在右侧检查器的Target Membership**中勾选你的App Target,这样文件才会被打包进App Bundle。

2. 修正代码获取正确的文件URL

原来的代码直接用文件名创建URL是错误的,App Bundle里的文件路径不是当前工作目录,必须通过Bundle.main获取正确路径。修改后的代码如下:

@IBAction func airdropMyFile() {
    // 从主bundle获取文件的正确URL
    guard let fileURL = Bundle.main.url(forResource: "airdropme", withExtension: "zip") else {
        // 处理文件找不到的情况,比如打印日志或提示用户
        print("找不到airdropme.zip文件")
        return
    }
    
    let filesToShare = [fileURL]
    let activityViewController = UIActivityViewController(activityItems: filesToShare, applicationActivities: nil)
    
    // iPad适配(如果支持iPad)
    if let popoverController = activityViewController.popoverPresentationController {
        popoverController.sourceView = self.view
        popoverController.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
        popoverController.permittedArrowDirections = []
    }
    
    self.present(activityViewController, animated: true, completion: nil)
}

关键说明

  • Bundle.main.url(forResource:withExtension:)会自动在App Bundle中查找对应文件,返回正确的文件URL,这是获取bundle内文件的标准方式。
  • 加入空值判断(guard let)可以避免文件不存在时崩溃,同时能做错误处理。
  • 补充了iPad的popover适配,避免在iPad上因未设置sourceRect导致的崩溃问题。

内容的提问来源于stack exchange,提问作者Rev Archer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 09:30:49