iOS:应用扩展程序如何将文件复制到应用文档/文件夹?

时间:2018-12-18 22:14:51

标签: ios swift

在应用扩展中,是否可以获取文件并将其复制到Documents //文件夹?

我可以使用以下代码获取文件。但是如何复制呢?我总是有错误

        for item in self.extensionContext!.inputItems as! [NSExtensionItem] {
        for provider in item.attachments! as! [NSItemProvider]  {
            provider.loadItem(forTypeIdentifier: provider.registeredTypeIdentifiers.first! as! String, options: nil, completionHandler: { (fileURL, error) in
                if let fileURL = fileURL as? URL {
                    self.url = fileURL
                    // self.extensionOpenUrl(App.associatedDomain + fileURL.absoluteString)
                }
            })
        }
    }

点击复制:

 let fileManager = FileManager.default
    let pathForDocumentsDirectory = fileManager.containerURL(forSecurityApplicationGroupIdentifier: App.group)!.path

    let fileURL = self.url!
    let name = fileURL.lastPathComponent
    let copiedPath = pathForDocumentsDirectory
    do {
        try fileManager.copyItem(atPath: fileURL.absoluteString, toPath: copiedPath)
        if fileManager.fileExists(atPath: copiedPath) {
            print("fileExists!!!")
        }
    } catch let error as NSError {
        print("error in copyItemAtPath")
        print(error.localizedDescription)
    }

文件网址:

 file:///var/mobile/Media/PhotoData/OutgoingTemp/3CEC8D4A-9B1B-468B-A919-7C70C9C522B3/IMG_5484.jpg

复制路径:

 /private/var/mobile/Containers/Shared/AppGroup/D7D2317B-9C57-424D-9D2F-209C62BBFAE5/IMG_5484.jpg

错误:

  The file “IMG_5484.jpg” couldn’t be opened because you don’t have permission to view it.

1 个答案:

答案 0 :(得分:1)

您不能那样做。扩展只能通过在应用程序组空间中保留/修改文件来与主应用程序通信(这也意味着您必须首先在开发人员门户中创建应用程序组并添加适当的权利)。