我想让我的app文件系统保留有关其中每个文件的元数据,但也支持用户端的目录创建。我查看了NSFileWrapper
,但它似乎将带有元数据的文件保存为目录。这是有道理的,但是现在如何区分实际目录和NSFileWrapper
目录?或者我应该在每个目录中使用隐藏的plist
文件跟踪元数据?在此先感谢您的帮助!
答案 0 :(得分:2)
您可以使用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,它存储状态信息,例如当前插入符号位置,书签和行折叠。
重要的是要注意元数据是易变的,不应该依赖它来保留关键信息。
其他参考资料: