SOExtendedAttributes 1.0.8

SOExtendedAttributes 1.0.8

测试已测试
Lang语言 Obj-CObjective C
许可 BSD
发布最后发布2014年12月

Bill Garrison维护。



  • Bill Garrison

SOExtendedAttributes是一个在NSURL上的分类,提供用于操作文件系统对象扩展属性的方法。

实现使用了listxattr(2),getxattr(2),setxattr(2),和removexattr(2)。

内省

- (BOOL) hasExtendedAttributeWithName:(NSString *)name;

逐个访问属性

- (id) valueOfExtendedAttributeWithName:(NSString *)name error:(NSError * __autoreleasing *)outError;
- (BOOL) setExtendedAttributeValue:(id)value forName:(NSString *)name error:(NSError * __autoreleasing *)outError;

批量访问属性

- (NSDictionary *) extendedAttributesWithError:(NSError * __autoreleasing *)outError;
- (BOOL) setExtendedAttributes:(NSDictionary *)attributes error:(NSError * __autoreleasing *)outError;

删除扩展属性

- (BOOL) removeExtendedAttributeWithName:(NSString *)name error:(NSError * __autoreleasing *)outError;

与iCloud备份一起使用

注意 2013-06-03:关于标记文件以排除iCloud备份的建议方法,请参阅Apple Tech QA 1719。提示:不要使用@"com.apple.MobileMeBackup"扩展属性。

扩展属性值

扩展属性值可以是任何可以序列化为属性列表的Foundation对象

  • NSData
  • NSString
  • NSNumber
  • NSArray
  • NSDictionary
  • NSDate

已知问题、杂项和烦恼

最大值大小

扩展属性值的最大大小?我不确定,但我相信它是HFS+目录或属性树中的节点大小的函数。网上说从3802字节到128KB不等。因此,适用于标准的免责声明:根据您的驾驶情况可能有所不同。在禁止的地方无效。不要操作重型机械。

参考文献:谷歌搜索

非文件URL

如果在这些方法上对非文件URL进行调用,则会抛出NSInternalInconsistencyException

解析符号链接

这些方法作用于显式给出的URL。如果该URL指向一个符号链接,您将操作符号链接的扩展属性,而不是其原始文件。请使用-URLByResolvingSymlinksInPath来获取指向原始文件系统项目的URL。

ARC

如果您的项目没有使用ARC,您需要在Xcode中的NSURL+SOExtendedAttributes.m上设置一个每个文件的构建标志

-fobc-arc

安装

对于Mac OS X或iOS项目,请添加以下文件

NSURL+SOExtendedAttributes.h
NSURL+SOExtendedAttributes.m

兼容性

SOExtendedAttributes与Mac OS X 10.6+和iOS 5兼容。需要clang编译器。源文件NSURL+SOExtendedAttributes.m必须启用ARC编译。

有关与Mac OS X 10.4及更高版本兼容的替代Cocoa实现,请参阅UKXattrMetadataStore

致谢

Bill Garrison,初始创建者。 [@github](https://github.com/billgarrison), [@bitbucket](https://bitbucket.org/billgarrison)

Uli Kusterer,为 UKXattrMetadataStore。[查看](http://zathras.de/angelweb/sourcecode.htm)

Simon Tännler,因开始 Cocoapods 规范。[@github](https://github.com/simontea)