KSURLComponents 1.0.3

KSURLComponents 1.0.3

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

未命名 维护。



  • 作者
  • Mike Abdullah

KSFileUtilities 包含一系列用于处理 URL、路径以及其他文件管理方面的有用方法。以下是一些按目的分组的选择

查询参数

将 URL 的查询字符串分割成一个类似字典的参数序列是很常见的情况。例如:

http://en.wikipedia.org/w/index.php?title=Main_page&action=raw

KSURLQueryUtilities 为将此转换为更 Cocoa 友好的形式提供了一个简单解决方案

- (NSDictionary *)ks_queryParameters;

还有从字典创建/推导新 URL 的 API

- (NSURL *)ks_URLWithQueryParameters:(NSDictionary *)parameters;

+ (NSURL *)ks_URLWithScheme:(NSString *)scheme
                       host:(NSString *)host
                       path:(NSString *)path
            queryParameters:(NSDictionary *)parameters;

KSURLFormatter

为各种 URL 显示和输入任务而设计的 NSFormatter 子类。

  • 不完整的 URL,如 exampleexample.com,生成了完整的 http://example.com/ URL
  • 主机 URL 会附加一个斜杠。例如,http://example.com 显示/解释为 http://example.com/
  • 方便的 +URLFromString: 方法会处理未转义字符

KSURLFormatter 如果有一个合适的后端,可以编码国际化域名。对于 Mac OS X 项目,您可以包括 KSEncodeURLString.* 并链接到 WebKit.framework 以免费获得此功能。对于其他项目,通过以下之一提供自己的实现

  • 调用 +[KSURLFormatter setEncodeStringValueTransformer:]
  • 在调用 +encodeStringValueTransformer 之前调用 +[NSValueTransformer setValueTransformer:forName:]
  • 将自定义类命名为 KSEncodeURLString

解码是通过 IFUnicodeURL 来执行的。请确保您适当处理其许可——有关详细信息,请参阅此文件的许可部分。

KSURLComponents

为 iOS 7 之前的 Cocoa 版本克隆自 NSURLComponents

URL 规范化

KSURLNormalization 分类实现了 Wikipedia 中记录的规范化。

相对字符串

NSURL 完全可以解析相对字符串相对于另一个 URL,但遗憾的是没有 API 可以前往相反的方向。KSURLUtilities 来拯救!

- (NSString *)ks_stringRelativeToURL:(NSURL *)URL;
- (NSURL *)ks_URLRelativeToURL:(NSURL *)URL;

这个工作原理如何?嗯,每个人都有爱例子对吧?

接收者 relativeToURL 返回值
http://karelia.com/foo/bar/ http://karelia.com/ foo/bar/
http://karelia.com/foo/example.png http://karelia.com/ foo/example.png
http://karelia.com/foo/bar/ http://example.com/ http://karelia.com/foo/bar/
http://karelia.com/ http://karelia.com/foo/bar/ ../../
http://karelia.com/baz/index.xml http://karelia.com/foo/bar/ ../../baz/index.xml

相对路径

KSPathUtilities 对路径字符串的操作有一个等效的函数:-ks_pathRelativeToDirectory:

子路径

用于测试一个URL/路径是否包含另一个

- [NSURL ks_isSubpathOfURL:]
- [NSString ks_isSubpathOfPath:]

主机

这里没有什么特别的,只是对内置的 -[NSURL host] 方法做了一些补充。

- (NSURL *)ks_hostURL;

将URL简化为其方案和主机的组合。例如,http://karelia.com/foo/bar/ 变为 http://karelia.com/

- (NSArray *)ks_domains;

将主机拆分为其域。例如,http://www.karelia.com 得到 (www, karelia, com)

URL路径

从Mac OS X 10.6开始,我们获得了一组新的URL方法,如 -URLByDeletingLastPathComponent。如果您之前想要访问这种行为,就需要手动对 NSString 路径方法进行繁琐的操作,或者使用 CFURL 函数。KSURLUtilities 为10.5及更早版本提供了所有这些任务的简单Cocoa API。

- (NSString *)ks_lastPathComponent;
- (NSString *)ks_pathExtension;
- (NSURL *)ks_URLByAppendingPathExtension:(NSString *)pathExtension;
- (NSURL *)ks_URLByDeletingLastPathComponent;
- (NSURL *)ks_URLByDeletingPathExtension;
- (BOOL)ks_hasDirectoryPath;
- (NSURL *)ks_URLByAppendingPathComponent:(NSString *)pathComponent isDirectory:(BOOL)isDirectory;

路径自增

有时需要尝试找到适合特定任务的最佳文件名/路径。例如,选择一个不会与现有文件冲突的文件名。为此,提供了 -[NSString ks_stringByIncrementingPath:] 方法。给定路径 example.png,它将按以下方式循环:

example.png
example-2.png
example-3.png
example-4.png
…

有关该方法的实现和使用更多信息,请参阅 Mike的博客

KSFilePromise

简化了在基于文档的应用程序中处理拖放文件承诺。从 NSDraggingInfo 创建 KSFilePromise 实例,并负责管理收到的文件。

KSWebLocation

一个简单的表示URL(可选地附加标题)的类。功能

  • 处理Web位置文件(例如,通过从Safari拖动URL创建的文件)
  • NSCoding
  • NSCopying

您还可以引入依赖于 WebKit.framework 的 KSWebLocationPasteboardAdditions,以便(不出所料)支持从/到剪贴板的Web位置读取和写入。

其他文件/URL实用工具

许可

版权所有 © 2005-2013 Karelia Software

在此,免费准许任何取得此软件及相关文档副本(以下称为“软件”)的人,在不限任何权利的情况下处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并准许收得软件的人执行上述行为,前提是在以下条件下:

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“现状”提供,不提供任何形式的保证,无论是明示的、推定的还是其他的,包括但不限于适销性、适用于特定目的和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,不论是因合同、侵权或其他行为产生的,还是与软件或软件的使用或其他行为有关。

IFUnicodeURL

如果使用 KSURLFormatter,它依赖于 IFUnicodeURL,其许可如下

版权 2010 Iconfactory, Inc. 保留所有权利。

红下列条件满足的情况下,允许重新分发给源代码和二进制形式,修改后或不修改后均可使用。

  1. 源代码分发给重新分发时必须保留上述版权声明、本条件列表以及以下免责声明。

  2. 二进制形式分发给重新分发时必须在文档或与分发一起提供的其他材料中再现上述版权声明、本条件列表以及以下免责声明。

该软件由Iconfactory,Inc.提供,“现状”且不提供任何明示或暗示的保证,包括但不限于适销性和适用于特定目的的隐含保证。在任何情况下,Iconfactory,Inc.或贡献者不因任何直接、间接、偶然、特殊、示范性或连锁损害赔偿责任(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)而承担责任,无论这些损害责任是出于何种原因以及基于何种责任理论,无论是合同、严格责任还是侵权(包括疏忽或其他)。即使被告知该软件使用可能会有此类损害,仍应承担此类损害责任。

软件和文档中包含的观点和结论是作者的观点,不应视为代表Iconfactory,Inc.的官方政策,无论是明示还是暗示。

IDN SDK

IFUnicodeURL又依赖于VeriSign的IDN SDK

/**********************************************************************/ / / / VeriSign XCode(编码/解码)IDN库 / / / / 区域名字符串的编码/解码库。 / / / / (c)VeriSign Inc.,2003,保留所有权利 / / */ /***********************************************************************/

/**********************************************************************/ / / / 版权(c)2003,VeriSign 公司。 / / 所有权利保留。 / / / / 若要允许在源代码和二进制形式下重新分发和使用(无论是否修改),必须满足以下条件: / / / / 1)源代码重新分发必须保留上述版权声明、本条件列表以及下列免责声明。 / / / / 2)二进制形式重新分发必须在本分发所提供的文档和其他材料中复制上述版权声明、本条件列表以及下列免责声明。 / / / / 3)未经具体预先书面许可,不得使用 VeriSign 公司或其贡献者的姓名来认可或推广由此软件派生出的产品。 / / / / 本软件由版权所有者和贡献者按“现状”提供,并不承担任何明示或暗示的保证,包括但不限于适销性和适用于特定目的的保证。在任何情况下,版权所有者或贡献者均不对因使用本软件而产生的任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代货物或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,即使已被告知此类损害的可能。 / / / / 本软件受 BSD 开源许可证许可。更多信息请访问 www.opensource.org/ / */ /***********************************************************************/

/**********************************************************************/ / / / 作者: / / / / John Colosi(VeriSign) / / Lihui Zhang(VeriSign) / / Srikanth Veeramachaneni(VeriSign) / / Jim Mathies(VeriSign) / / */ /***********************************************************************/