Mantle-HAL-Remix 1.0.1

Mantle-HAL-Remix 1.0.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2015年7月

Lynn Zhou 维护。



Mantle-HAL

Build Status

Mantle-HAL 是一个 Objective-C 的 HAL 解析器。HAL。与其他 HAL 解析器不同的是,它为您设置强类型资源和链接!

Mantle-HAL 在 Mantle 之上运行,Mantle 是一个流行的 JSON 模型解析器,易于使用,由 GitHub 编写和维护!像 Mantle 一样,Mantle-HAL 自动提供对 <NSCoding><NSCopying>-isEqual:-hash 的实现。如果您可以使用 Mantle,则可以使用 Mantle-HAL!

使用 Mantle-HAL,您可以使用任何您希望使用的 http 库,如果有任何库的话!唯一的依赖项是 Mantle 本身。作为免责声明,我必须声明这是 Mantle 的非官方扩展!

入门

将 Mantle-HAL 包含到您的项目中最简单的方法是使用 CocoaPods。在您的项目中设置了它并运行后,只需将 pod "Mantle-HAL" 添加到您的 Podfile 中。

然后运行 pod install 以安装依赖项,并从此使用 xcworkspace

资源

HAL 的核心是资源。MTLHALResource 是 Mantle-HAL 中所有资源的基类。它包含一个链接的字典,以及两个进一步的功能来访问任何嵌入的资源

  • - (MTLHALResource *)resourceForRelation
  • - (NSArray *)resourcesForRelation

其中 relation 是一个包含您在 JSON 中指定的嵌入关系的键的字符串。

您的资源应派生自 MTLHALResource 并提供您自己的属性。

例如,一个 Address 资源可能看起来像这样

 #import <Mantle-HAL/MTLHALResource.h>

 @interface Address : MTLHALResource

 @property (nonatomic, strong) NSString *street;
 @property (nonatomic, strong) NSString *city;
 @property (nonatomic, strong) NSString *state;

 @end

现在这个资源可能来自一个代表 JSON 数据的 NSDictionary 对象。将此字典转换为地址正如 Mantle 中的操作完全一样

 Address *address = [MTLJSONAdapter modelOfClass:Address.class fromJSONDictionary:addressJSONDictionary error:&error];

现在资源可以嵌入到不同的资源中。然而,Mantle-HAL 允许这些嵌入式资源也具有强类型。在转换任何 HAL 资源之前(例如,在您的 App Delegate 中),您应将您的类注册到相关的联系中 - 这通过 MTLHALResource 的类方法 - registerClass: forRelation: 完成。例如,假设您的资源可以有 addr:workaddr:home,都表示 Address 对象

 [MTLHALResource registerClass:Address.class forRelation:@"addr:home"];
 [MTLHALResource registerClass:Address.class forRelation:@"addr:work"];

现在,无论您使用哪个联系检索嵌入资源,您都会得到地址对象!

最后一点非常重要 - 如果您的资源使用了+ JSONKeyPathsByPropertyKey,请确保在返回的字典中包含[super JSONKeyPathsByPropertyKey]的结果,否则您的链接和嵌入式资源将不会包含在资源中。

链接

HAL资源可以包含任意数量的链接。MTLHALResource提供了一个名为links的字典。键表示链接的名称,值是一个MTLHALLink对象的数组。MTLHALLink是一个用于表示链接的对象,完全符合HAL规范的链接部分。

CURIEs

如果您需要它们,Mantle-HAL完全支持CURIEs。它可以传递到嵌入式资源或被覆盖。要获取特定关系的CURIE URL,MTLHALResource提供了- extendedHrefForRelation:方法,该方法返回包含关系信息的URL。

Swift支持

Mantle当前无法与Swift对象一起工作,因此您目前必须使用Objective-C编写资源。然而,如果它们已经在您的桥接头中包含,您就可以在Swift中使用所有资源。

贡献

正如大家所说,GitHub是关于社交编码 - 我之所以选择使用它,不仅仅是因为我喜欢git作为版本控制系统。请积极贡献,帮助使这个项目更加完善,或者如果您看到任何不正常工作的内容,请提交一个问题。

许可证

MIT许可证下提供使用。请参阅LICENSE文件或任何类头以获取全部详细信息。