【发布时间】:2014-08-20 14:57:03
【问题描述】:
我正在使用 setxattr 命令查看 iOS 和 Mac 文件的扩展文件属性。据我了解,我可以在那里存储任意数据,最多 128kb。
如何像处理字典而不是取消引用字符串指针一样编写和读取扩展属性?
到目前为止,我有这段代码尝试设置单个属性。
NSString* filepath = [MyValueObject filepath];
const char *systemPath = [filepath fileSystemRepresentation];
const char *name = "special_value";
const char *value = "test string";
int result = setxattr(systemPath, name, &value, strlen(value), 0, 0);
如果我需要存储一小组值(比如 5 个键值对),我正在考虑:
- 使用我的属性创建一个 NSDictionary
- 将字典转换为 JSON 字符串
- 将字符串转换为字符指针
- 将字符串写入扩展属性
- 要回读属性,我会回读字符串指针
- 转换为 NSString
- 转换为 JSON 对象
- 创建字典返回
- 从字典中检索值
这看起来是正确的方法吗? 有没有更简单的方法将元数据存储在扩展属性中?也许 NSObject 上有一个类别可以处理 xattr 的指针操作?
【问题讨论】:
-
但是为什么它需要是json格式,你是把它发回你的服务器吗?
-
没错,当我尝试将文件转换为 NSData 时,扩展属性不会被发送过来,所以我只想获取字典并将其与 post 请求一起发送。
标签: ios objective-c json file xattr