Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从UIDocumentMenuViewController或UIDocumentPickerViewController获取文件源?_Ios_Swift_Uidocumentpickerviewcontroller_Uidocumentmenuviewcontroller - Fatal编程技术网

Ios 如何从UIDocumentMenuViewController或UIDocumentPickerViewController获取文件源?

Ios 如何从UIDocumentMenuViewController或UIDocumentPickerViewController获取文件源?,ios,swift,uidocumentpickerviewcontroller,uidocumentmenuviewcontroller,Ios,Swift,Uidocumentpickerviewcontroller,Uidocumentmenuviewcontroller,我已成功实施了一项功能,允许用户通过UIDocumentMenuViewController和UIDocumentPickerViewController向我的应用程序拾取文件 但我无法找到如何检测文件的来源。有像文件、谷歌硬盘和DropBox等资源 func documentMenu(_ documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewCo

我已成功实施了一项功能,允许用户通过
UIDocumentMenuViewController
UIDocumentPickerViewController
向我的应用程序拾取文件

但我无法找到如何检测文件的来源。有像文件谷歌硬盘DropBox等资源

func documentMenu(_ documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController)
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL)
我已经完成了所有的委托函数,没有看到任何方法。任何帮助都将不胜感激。

你好,卡尔文

请添加委派
UIDocumentMenuDelegate、UIDocumentPickerDelegate

    func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
            let docurl = url as URL
            print("The Url is : \(docurl)")
            let urlRequest = NSURLRequest(url: docurl)
            do {
                let fileAttributes = try FileManager.default.attributesOfItem(atPath: url.path)
                    let theData = try NSURLConnection.sendSynchronousRequest(urlRequest as URLRequest, returning: nil)
                    let fileExtension = urlRequest.url?.lastPathComponent
                    var strFileNAME = ""
                    if (fileExtension?.contains("pdf"))! {
                        print("pdf")
                    } else {
                        print("doc")
                    } 
                    var docURL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)).last as NSURL?
                    docURL = docURL?.appendingPathComponent("\(String(describing: fileExtension))") as NSURL?
                    try theData.write(to: docURL! as URL)
                    self.DocumentData = theData
                    print("downloaded")
                }
            } catch (let writeError) {
                print("error : \(writeError)")
            }
            let docURL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last)
            do {
                let contents = try (FileManager.default.contentsOfDirectory(at: docURL!, includingPropertiesForKeys: nil, options: FileManager.DirectoryEnumerationOptions.skipsHiddenFiles))
                print(contents)
            }
            catch (let error) {
                print("error contents \(error)")
            }
        }

        public func documentMenu(_ documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) {
            documentPicker.delegate = self
            present(documentPicker, animated: true, completion: nil)
        }

        func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
            dismiss(animated: true, completion: nil)
        }

出于隐私原因,这是不可能的。您不应该知道用户安装了哪些云供应商

另外,请不要使用已弃用的
UIDocumentMenuViewController