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

在上面的代码中,functionssetResourceValue:forKey:error:getResourceValue:forKey:error:returnYES都表示成功,但最终的值为resourceValuenil,这可能意味着该值实际上没有被记录。

那么,有没有办法在 iOS 中为文件设置我自己的属性?如果不是,那么在不修改文件本身的情况下,将额外信息同化到文件中的好(简单)方法是什么?

非常感谢!

4

1 回答 1

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];
    }
于 2016-01-06T17:28:09.827 回答