iOS设备上的用户特定文档目录

iOS设备上的用户特定文档目录,ios,swift,swift3,Ios,Swift,Swift3,在我的iOS应用程序中,我想存储一些特定于用户的数据 我希望NSSearchPathForDirectoriesInDomains(.documentDirectory、.userDomainMask,true)[0]返回用户的文档目录,但它返回以下目录:/var/mobile/Containers/Data/Application/%app\u id%/Documents 当我在iOS设备上使用另一个用户(Apple ID)登录时,此路径保持不变 这个目录似乎是Mac OS中唯一特定于用户的目

在我的iOS应用程序中,我想存储一些特定于用户的数据

我希望
NSSearchPathForDirectoriesInDomains(.documentDirectory、.userDomainMask,true)[0]
返回用户的文档目录,但它返回以下目录:
/var/mobile/Containers/Data/Application/%app\u id%/Documents

当我在iOS设备上使用另一个用户(Apple ID)登录时,此路径保持不变

这个目录似乎是Mac OS中唯一特定于用户的目录

那么,我应该使用哪个目录在iOS中存储用户特定的数据呢

更新:


根据前面的回答和评论,所需的行为似乎不是故意的。

您可以为应用程序创建一个新文件夹,在文档目录中尝试以下代码创建文件夹。当你们需要应用程序上的数据时,不要忘记从同一个目录中读取数据

当您不想向其他用户提供访问权限时,您必须在注销时删除该文件夹,或者必须使用用户名或其他唯一键创建文件夹。我建议在注销时删除该特定文件夹

 let yourPathToDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String + "/" + "YourAppDirDir" + "/"

    if !fileManager.fileExists(atPath: yourPathToDirectory!) {
        do {
            try  FileManager.default.createDirectory(atPath: yourPathToDirectory!, withIntermediateDirectories: true, attributes: nil)
        } catch  {
            print("error found")
        }
    }

您可以为您的应用程序创建一个新文件夹,在文档目录中尝试以下代码来创建文件夹。当你们需要应用程序上的数据时,不要忘记从同一个目录中读取数据

当您不想向其他用户提供访问权限时,您必须在注销时删除该文件夹,或者必须使用用户名或其他唯一键创建文件夹。我建议在注销时删除该特定文件夹

 let yourPathToDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String + "/" + "YourAppDirDir" + "/"

    if !fileManager.fileExists(atPath: yourPathToDirectory!) {
        do {
            try  FileManager.default.createDirectory(atPath: yourPathToDirectory!, withIntermediateDirectories: true, attributes: nil)
        } catch  {
            print("error found")
        }
    }

您应该将应用程序的文件放在哪里

将用户数据放入文档/。用户数据通常包括您可能希望向用户公开的任何文件,以及您可能希望用户创建、导入、删除或编辑的任何文件。对于绘图应用程序,用户数据包括用户可能创建的任何图形文件。对于文本编辑器,它包括文本文件。视频和音频应用程序甚至可能包含用户下载的文件,以便以后观看或收听

将应用程序创建的支持文件放入库/应用程序支持/目录。通常,此目录包含应用程序运行时使用的文件,但这些文件对用户应保持隐藏状态。此目录还可以包括数据文件、配置文件、模板和从应用程序包加载的资源的修改版本

请记住,文档/和应用程序支持/中的文件在默认情况下是备份的。您可以通过使用NSURLSecludedFromBackupKey键调用-[NSURL setResourceValue:forKey:error:]从备份中排除文件。任何可以重新创建或下载的文件都必须从备份中排除。这对于大型媒体文件尤其重要。如果应用程序下载视频或音频文件,请确保备份中未包含这些文件

将临时数据放入tmp/目录中。临时数据包括您不需要长期保存的任何数据。记住在处理完这些文件后删除它们,这样它们就不会继续占用用户设备上的空间。当应用程序未运行时,系统将定期清除这些文件;因此,在应用程序终止后,您不能依赖这些文件的持久性

将数据缓存文件放入库/Caches/目录。缓存数据可以用于任何需要比临时数据更持久的数据,但不能像支持文件那样持久。一般来说,应用程序不需要缓存数据才能正常运行,但它可以使用缓存数据来提高性能。缓存数据的示例包括(但不限于)数据库缓存文件和瞬态可下载内容。请注意,系统可能会删除缓存/目录以释放磁盘空间,因此您的应用程序必须能够根据需要重新创建或下载这些文件。

您应该将应用程序的文件放在哪里

将用户数据放入文档/。用户数据通常包括您可能希望向用户公开的任何文件,以及您可能希望用户创建、导入、删除或编辑的任何文件。对于绘图应用程序,用户数据包括用户可能创建的任何图形文件。对于文本编辑器,它包括文本文件。视频和音频应用程序甚至可能包含用户下载的文件,以便以后观看或收听

将应用程序创建的支持文件放入库/应用程序支持/目录。通常,此目录包含应用程序运行时使用的文件,但这些文件对用户应保持隐藏状态。此目录还可以包括数据文件、配置文件、模板和从应用程序包加载的资源的修改版本

请记住,文档/和应用程序支持/中的文件在默认情况下是备份的。您可以通过使用NSURLSecludedFromBackupKey键调用-[NSURL setResourceValue:forKey:error:]从备份中排除文件。任何可以重新创建或下载的文件都必须从备份中排除。这对于大型媒体文件尤其重要。如果应用程序下载视频或音频文件,请确保备份中未包含这些文件

将临时数据放入tmp/目录中。临时数据包括您不需要长期保存的任何数据。记住在处理完这些文件后删除它们,这样它们就不会继续占用用户设备上的空间。当应用程序未运行时,系统将定期清除这些文件;因此,在应用程序终止后,您不能依赖这些文件的持久性

将数据缓存文件放入库/Caches/目录。缓存数据可用于任何需要比临时数据更持久的数据