Xamarin.Essentials 如何处理 iOS 的“文档”文件夹?

问题描述

我学习了“build mobile apps with Xamarin.Forms”课程。在“store local data with SQLite in a Xamarin.Forms app”部分,他们说 iOS 提供了两个文件夹来处理保存在设备上的文件

然后,呈现此小节:

enter image description here

我不明白的是:这是处理 iOS Documents 文件夹的正确方法吗?我问这个是因为他们明确说 def forward_back_prop(rnn,optimizer,criterion,inp,target,hidden): ... if hidden is not None: hidden = hidden.detach() ... output,hidden = rnn(inp,hidden) ... return loss.item(),hidden def train_rnn(rnn,batch_size,n_epochs,show_every_n_batches): ... for epoch_i in range(1,n_epochs + 1): hidden = None for batch_i,(inputs,labels) in enumerate(train_loader,1): loss,hidden = forward_back_prop(rnn,inputs,labels,hidden) ... ... 包含适当的图书馆位置。 Apple 指南要求的 Documents 文件夹怎么样?

解决方法

iOS 中有关于文件夹不同用途的详细信息,在this document

文件:/

使用此目录来存储用户文档和应用程序数据文件。

这个目录的内容可以提供给用户 通过 iTunes 文件共享(尽管默认情况下这是禁用的)。 将 UIFileSharingEnabled 布尔键添加到 Info.plist 文件以允许 用户访问这些文件。

即使应用程序没有立即启用文件共享,您 应该避免将应该对用户隐藏的文件放在 这个目录(比如数据库文件,除非你打算共享 他们)。只要敏感文件保持隐藏,这些文件就不会 被暴露(并可能被 iTunes 移动、修改或删除),如果 在未来版本中启用文件共享。

您可以使用 Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments) 方法来获取路径 应用程序的文档目录。

此目录的内容由 iTunes 备份。

图书馆/:

Library 目录是存储不属于的文件的好地方 由用户直接创建,如数据库或其他 应用程序生成的文件。这个目录的内容永远不会 通过 iTunes 向用户公开。

您可以在库中创建自己的子目录;然而,有 这里已经有一些系统创建的目录,你应该知道 的,包括首选项和缓存。

这个目录的内容(Caches子目录除外) 由 iTunes 备份。您在库中创建的自定义目录 将被备份。

请阅读文档,如果您有其他问题,请随时询问。

更新

访问更新答案:

iOS:

string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
string libFolder = System.IO.Path.Combine(docFolder,"..","Library");

安卓:

string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);