我正在实现一些管理简单文件(如文本文件)的代码,我想在文件中添加一些信息,例如位置,标签等,而无需在文本文件上写入额外的文本
我认为最简单的方法是在文件属性中添加额外的信息,但我不确定这是否可行。
我一直在玩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中为文件设置自己的属性?如果没有,那么在不修改文件本身的情况下,将多余的信息同化到文件中会有什么好的(简单的)方式?
非常感谢!
答案 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];
}