我在iOS上使用了cordova 3.4和org.apache.cordova.file(最新版本1.3.1). 我想将数据存储在Library / NoCloud目录中,我发现在doc中我们应该在config.xml中设置这些变量: preference name="iosPersistentFileLocation
我想将数据存储在Library / NoCloud目录中,我发现在doc中我们应该在config.xml中设置这些变量:
<preference name="iosPersistentFileLocation" value="Library" /> <preference name="iosExtraFilesystems" value="library-nosync" />
但它不起作用,它给了我一个库/文件中的文件系统根,我无法移动到NoCloud目录,因为我们无法获取根库/文件的父.
有人也在努力解决这个问题吗?您是否成功使用了iosExtraFilesystems var?
我正在尝试升级cordova,但在做这件事时还有其他问题..我会发布进一步的进展.
更新:
不使用cordova 3.5,3.6,我在apache的jira跟踪器上创建了一个问题:https://issues.apache.org/jira/browse/CB-7687
谢谢
蒂博
使用resolveLocalFileSystemURL而不是requestLocalFileSystem最简单的方法(自v1.2.0开始)使用cordova.file.dataDirectory属性.它应该是library-nosync目录的路径.您可以将它与resolveLocalFileSystemURL结合使用,以获取可以在其中创建文件的目录条目对象.
这样的事情应该有效:
resolveLocalFileSystemURL(cordova.file.dataDirectory, function(entry) { console.log("Success! Got a DirectoryEntry"); // Do more things with `entry` here }, function(error) { console.error("Something bad happened, and we didn't get a DirectoryEntry"); });
其他一些说明
澄清您在问题中提到的两个设置:
<preference name="iosPersistentFileLocation" value="Library" />
此首选项只告诉File插件,默认情况下,PERSISTENT文件系统应该将文件存储在设备的Library目录下.如果没有该设置,则默认值为先前Cordova版本(Documents目录)使用的位置.无论如何,库文件系统可供您的应用程序使用(只要您没有使用下一个设置禁用它)
<preference name="iosExtraFilesystems" value="library-nosync" />
除了要安装的默认值(临时和持久)之外,iosExtraFilesystems首选项告诉File插件哪个文件系统根目录.默认情况下,它设置为字符串
"library,library-nosync,documents,documents-nosync,cache,bundle,root"
这已经包含了library-nosync,因此您不必添加它.实际上,以实际方式设置它实际上会从应用程序中删除其他文件系统根.