title: UIDocumentPickerViewController returns url to a file that does not exist
body: <p>I'm using <a href="https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDocumentPickerViewController_Class/index.html" rel="noreferrer"><code>UIDocumentPickerViewController</code></a> to let the user select a file from iCloud Drive for uploading to the backend.</p>
  
  <p>Most of the time, it works correctly. However, sometimes (especially when the internet connection is spotty)<a href="https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDocumentPickerDelegate/index.html#//apple_ref/occ/intfm/UIDocumentPickerDelegate/documentPicker:didPickDocumentAtURL:" rel="noreferrer"><code>documentPicker:didPickDocumentAtURL:</code></a> gives a url that does not actually exist on the filesystem, and any attempt to use it returns a NSError "No such file or directory".</p>
  
  <p>What is the correct way to handle this? I'm thinking about using <a href="https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/index.html#//apple_ref/occ/instm/NSFileManager/fileExistsAtPath:" rel="noreferrer"><code>NSFileManager fileExistsAtPath:</code></a> and tell the user to try again if it doesn't exist. But that doesn't sound very user friendly. Is there a way to get the real error reason from iCloud Drive and perhaps tell iCloud Drive to try again?</p>
  
  <p>The relevant parts of the code:</p>
  
  <pre><code>@IBAction func add(sender: UIBarButtonItem) {
      let documentMenu = UIDocumentMenuViewController(
          documentTypes: [kUTTypeImage as String],
          inMode: .Import)
  
      documentMenu.delegate = self
      documentMenu.popoverPresentationController?.barButtonItem = sender
      presentViewController(documentMenu, animated: true, completion: nil)
  }
  
  func documentMenu(documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) {
      documentPicker.delegate = self
      documentPicker.popoverPresentationController?.sourceView = self.view
      presentViewController(documentPicker, animated: true, completion: nil)
  }
  
  func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) {
      print("original URL", url)
  
      url.startAccessingSecurityScopedResource()
  
      var error: NSError?
      NSFileCoordinator().coordinateReadingItemAtURL(
      url, options: .ForUploading, error: &amp;error) { url in
          print("coordinated URL", url)
      }
  
      if let error = error {
          print(error)
      }
  
      url.stopAccessingSecurityScopedResource()
  }
  </code></pre>
  
  <p>I reproduced this by adding two large images (~5MiB each) to iCloud Drive on OS X and opening only one of them (<code>a synced file.bmp</code>) on an iPhone and not opening the other (<code>an unsynced file.bmp</code>). And then turned off WiFi. Then I tried to select them in my application:</p>
  
  <p>The synced file:</p>
  
  <pre><code>original URL file:///private/var/mobile/Containers/Data/Application/CE70EE57-B906-4BF8-B351-A57110BE2B01/tmp/example.com.demo-Inbox/a%20synced%20file.bmp
  coordinated URL file:///private/var/mobile/Containers/Data/Application/CE70EE57-B906-4BF8-B351-A57110BE2B01/tmp/CoordinatedZipFileDR7e5I/a%20synced%20file.bmp
  </code></pre>
  
  <p>The unsynced file:</p>
  
  <pre><code>original URL file:///private/var/mobile/Containers/Data/Application/CE70EE57-B906-4BF8-B351-A57110BE2B01/tmp/example.com.demo-Inbox/an%20unsynced%20file.bmp
  Error Domain=NSCocoaErrorDomain Code=260 "The file “an unsynced file.bmp” couldn’t be opened because there is no such file." UserInfo={NSURL=file:///private/var/mobile/Containers/Data/Application/CE70EE57-B906-4BF8-B351-A57110BE2B01/tmp/example.com.demo-Inbox/an%20unsynced%20file.bmp, NSFilePath=/private/var/mobile/Containers/Data/Application/CE70EE57-B906-4BF8-B351-A57110BE2B01/tmp/example.com.demo-Inbox/an unsynced file.bmp, NSUnderlyingError=0x15fee1210 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
  </code></pre>