在iOS中,我能否为文件设置任意属性?

4
我正在实现一些管理简单文件(如文本文件)的代码,并希望在不在文本文件中添加额外文本的情况下,为文件添加一些信息,例如位置、标签等。
我认为最简单的方法是将额外信息添加到文件属性中,但我不确定是否可行。
我一直在使用NSURL的“setResourceValue:forKey:error:”进行尝试,但似乎只有NSURL的预定义键才能真正将某些内容写入文件的属性。所以:
NSURL *fileURL; //suppose this points to something
NSError *error;
id resourceValue;

[fileURL setResourceValue:@"recorded string" forKey:@"testingkey" error:&error];
[fileURL getResourceValue:&resourceValue forKey:@"testingkey" error:&error];

在上面的代码中,setResourceValue:forKey:error:getResourceValue:forKey:error:两个函数都返回YES,表示它们执行成功,但是resourceValue的最终值是nil,这可能意味着实际上没有记录该值。

那么,在iOS中有一种设置自己文件属性的方法吗?如果没有,有什么好(易)的方法可以将额外的信息合并到文件中,而不修改文件本身呢?

非常感谢!


1
这就是你所需要的: http://www.cocoanetics.com/2012/03/reading-and-writing-extended-file-attributes/ - Emerson Malca
谢谢!那确实是我所需要的。 - Marcelo Esperidiao
@Marcelo,我在设置后从这段代码中获得了输出。 - Karthik Mitta
1个回答

0

这是一个扩展文件属性的补充说明。

本文详细分析了如何解决问题,既不需要更改原始文件内容,又需要将一些信息写入文件中。

你可以像这样使用:

#include <sys/xattr.h>

    if (!&NSURLIsExcludedFromBackupKey) {
        // iOS <= 5.0.1
        const char *filePath = [[URL path] fileSystemRepresentation];
        const char *name = "com.apple.MobileBackup";
        u_int8_t value = 1;
        int result = setxattr(filePath, name, &value, sizeof(value), 0, 0);
    } else {
        // iOS >= 5.1
        NSError *error = nil;
        [URL setResourceValue:@YES
                       forKey:NSURLIsExcludedFromBackupKey
                        error:&error];
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接