I am implementing a file provider based on NSFileProviderReplicatedExtension
on macOS. Currently I am working on the download of remote dataless files which works fine so far. It is materialized and available locally and the related NSFileProviderItem
object I provide to the system returns true
for isDownloaded
and isMostRecentVersionDownloaded
.
When I open the plain text file in Finder in TextEdit, then it is actually opened by the app but almost immediately the system also calls fetchContents(...)
on my extension object. I do not understand why because there is no need to fetch the contents.
I tried various ways to call the mandatory completion handler of fetchContents(...)
, but apparently either a URL to a local content file and the NSFileProviderItem
have to be provided or an Error
.
Note: When opening the plain text file through Finder in TextEdit the modifyItem(...)
function on my file provider extension is called, too, to update the .lastUsedDate
. In that completion handler I provide false
as the argument which tells the system to request the item contents.
How can I make clear that the system should not call fetchContents(...)
for already downloaded files over and over again?
Are you returning the same -[NSFileProviderItem contentVersion]
on the modifyItem
completion handler, as you had previously returned for the same item ?
Please do file a feedback if you feel the behavior is incorrect. Please install the iCloud Drive logging profile [1], reboot, reproduce, and then take a sysdiagnose to attach to the feedback. (And note the timestamp of your reproduction).
1: https://developer.apple.com/bug-reporting/profiles-and-logs/?platform=macos&name=drive