gpt4 book ai didi

swift - 区分 NSFileWrapper 和目录?

转载 作者:搜寻专家 更新时间:2023-10-31 22:45:51 25 4
gpt4 key购买 nike

我想让我的应用程序文件系统保留其中每个文件的元数据,但也支持在用户端创建目录。我看过 NSFileWrapper 但它似乎将带有元数据的文件保存为目录。这是有道理的,但是现在我如何区分实际目录和 NSFileWrapper 目录?或者我应该改为在每个目录中使用隐藏的 plist 文件来跟踪元数据?在此先感谢您的帮助!

最佳答案

您可以使用 setxattr在文件上存储额外的元数据键/值对。马特·汤普森 (Mattt Thompson) 在 NSHipster 上撰写了一篇出色的深度文章.

这是文章中的示例,展示了如何设置属性值:

#include <sys/xattr.h>
const char *filePath = [fileURL fileSystemRepresentation];
const char *name = "com.Example.Etag";
const char *value = [[response allHeaderFields][@"Etag"] UTF8String];
int result = setxattr(filePath, name, value, strlen(value), 0, 0);

setxattr 适用于支持扩展元数据属性的 Mac 文件系统。在 OS X 和 iOS 上,这由 HFS+ 支持,其中元数据存储在资源分支中,最大大小限制为 128KB。

您可以使用 listxattr检索可用标签。使用 getxattr检索特定标签的值。

使用它的一个应用程序示例是 TextMate , 它存储状态信息,例如当前插入符位置、书签和行折叠。

重要的是要注意元数据是易变的,不应依赖它来保留关键信息。

  1. 元数据可能会因各种原因被移动/更改/剥离,例如存储在不支持扩展元数据(例如 FAT32)的文件系统中,或者被压缩、网络或其他文件处理软件意外或有意更改.
  2. 元数据是一个共享的命名空间,这使得它非常适合与其他应用程序的互操作性,但也容易受到干扰。为避免名称冲突,键名称应以唯一标识符(即域名)为前缀。

其他引用资料:

关于swift - 区分 NSFileWrapper 和目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38387075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com