我可以在iOS中将任意属性设置为文件吗?

时间:2012-04-05 05:24:37

标签: ios file

我正在实现一些管理简单文件(如文本文件)的代码,我想在文件中添加一些信息,例如位置,标签等,而无需在文本文件上写入额外的文本

我认为最简单的方法是在文件属性中添加额外的信息,但我不确定这是否可行。

我一直在玩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 个答案:

答案 0 :(得分:0)

这是此问题的补充:extended-file-attributes

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

你可以像这样使用:

#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];
    }