4

iCloud Drive または Dropbox からサーバーにファイルをインポートしようとすると、 startAccessingSecurityScopedResource()デバイスのみ false が返されますが、シミュレーター (Xcode 8、Swift 2.3、最小ターゲット 8.0) でテストすると true が返されます。

これは私のコードです:

{
        func showCloudDriveAction(inputBar: NAChatInputBar) {
           let documentmenuPicker = UIDocumentMenuViewController(documentTypes: ["public.data"], inMode: .Import)
           documentmenuPicker.delegate = self
           presentViewController?.presentViewController(documentmenuPicker, animated: true, completion: nil)
       }

}

extension NAChatInputBarPresenter: UIDocumentPickerDelegate, UIDocumentMenuDelegate {

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

    public func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) {
        if url.startAccessingSecurityScopedResource() {
            guard let path = url.path, data = NSData(contentsOfFile: path) else {
                return
            }
            delegate?.chatInputBarPresenter(data, atUrl: url)
            url.stopAccessingSecurityScopedResource()
        }
    }

}
4

1 に答える 1