首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >区分NSFileWrapper和目录?

区分NSFileWrapper和目录?
EN

Stack Overflow用户
提问于 2016-07-15 02:40:53
回答 1查看 258关注 0票数 3

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-21 00:33:47

您可以使用塞扎特在文件中存储额外的元数据键/值对。马特-汤普森写了一篇关于NSHipster的优秀深入文章.

下面是本文中的示例,展示了如何设置属性值:

代码语言:javascript
复制
#include <sys/xattr.h>
代码语言:javascript
复制
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和iOS上,HFS+支持这一点,其中元数据存储在资源叉中,最大大小限制为128 of。

您可以使用李斯特检索可用的标记。使用[医] getxattr检索特定标记的值。

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

必须指出,元数据是不稳定的,不应依赖于保留关键信息。

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

其他参考资料:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38387075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档