Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
是否需要使用URL书签数据在iOS中持久化文件URL?_Ios_Nsurl - Fatal编程技术网

是否需要使用URL书签数据在iOS中持久化文件URL?

是否需要使用URL书签数据在iOS中持久化文件URL?,ios,nsurl,Ios,Nsurl,我在一个iOS应用程序中编写了一个持久层,偶然发现了URL的函数。它的使用看起来很简单,但是当我搜索关于这个主题的讨论时,我只看到macOS应用程序中使用的书签数据 有问题的文件是由应用程序创建的,而不是由用户直接创建的,如果用户将这些文件从其目录中移动,则应用程序可能会忘记该文件 考虑到这些细节,为了在应用程序启动之间访问文件URL,我应该保存书签数据,还是直接保存文件URL是安全的?如果文件在应用程序的沙箱之外,则必须存储书签数据,根据,您不能重用UIDocumentPickerVC提供的安

我在一个iOS应用程序中编写了一个持久层,偶然发现了URL的函数。它的使用看起来很简单,但是当我搜索关于这个主题的讨论时,我只看到macOS应用程序中使用的书签数据

有问题的文件是由应用程序创建的,而不是由用户直接创建的,如果用户将这些文件从其目录中移动,则应用程序可能会忘记该文件


考虑到这些细节,为了在应用程序启动之间访问文件URL,我应该保存书签数据,还是直接保存文件URL是安全的?

如果文件在应用程序的沙箱之外,则必须存储书签数据,根据,您不能重用UIDocumentPickerVC提供的安全范围的URL。要获取此书签数据,必须使用文件演示者/协调者或UIDocument访问该文件。代码可以如下所示:

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
    for url in urls {

       //My experience is that your UIDocument subclass needs to be called first 
       //  otherwise bookmarkData() will throw
       //Instead of UIDocument you could call your own file presenter logic
       var doc = MyUIDocument(fileURL: url)
       let bookmarkData = try url.bookmarkData()

       //Store your bookmarkData so you can later resolve a new URL
    }
我希望这会有所帮助,因为当我试图保存书签数据而没有首先处理文件时,我浪费了时间,犯了错误