假期 2.1

假期 2.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2017年3月

Igor Kovryzhkin 维护。



 
依赖
Mantle~> 2.0
AFNetworking~> 2.2
 

假期 2.1

  • 作者
  • IgorK

假期是一个用于Objective-C模型的拖放式REST解决方案。它是建立在AFNetworking和Mantle之上的。

使用示例

我们将尝试使用Xively来使用假期。Xively是一个用于托管您的物联网项目的服务。它为上传和从各种传感器读取数据提供了一个便捷的RESTfull Web服务。

首先,我们创建一个VCObject子类。

Xively使用“Feed”来表示单个项目,“Datastream”来表示传感器数据流,“Datapoint”来表示单个传感器记录。

这是对象在JSON中表示,以及在应用中的表示。

Feed JSON

 {
    "id": 121601,
    "title": "Demo",
    "private": "false",
    "feed": "https://api.xively.com/v2/feeds/121601.json",
    "status": "frozen",
    "updated": "2013-04-23T03:25:48.686462Z",
    "created": "2013-03-29T15:50:43.398788Z",
    "creator": "https://xively.com/users/calumbarnes",
    "version": "1.0.0",
    "datastreams": [
    {
        "id": "example",
        "current_value": "333",
        "at": "2013-04-23T01:10:02.986063Z",
        "max_value": "333.0",
        "min_value": "333.0"},
    {
        "id": "key",
        "current_value": "value",
        "at": "2013-04-23T00:40:34.032979Z"},
    {
        "id": "temp"
    }],
    "location": {
        "domain": "physical"
    }
}

在VCFeed.h文件中

#import "Vacation.h"
#import <Foundation/Foundation.h>

@interface VCFeed : VCStateTransferObject

@property (nonatomic, strong) NSString * title;
@property (nonatomic, assign) BOOL private;
@property (nonatomic, strong) NSString * status;
@property (nonatomic, strong) NSString * version;
@property (nonatomic, strong) NSString * creator;
@property (nonatomic, strong) NSArray  * tags;
@property (nonatomic, strong) NSString * feed_description;
@property (nonatomic, strong) NSArray  * datastreams;

@end

以及.m文件中

+ (NSDictionary *)mappingDictionary {
    return @{@"feed_description" : @"description"};
}

- (NSString *)endpointURL {
   return @"/v2/feeds";
}

+ (NSValueTransformer *)datastreamsJSONTransformer {
    return [MTLJSONAdapter arrayTransformerWithModelClass:VCDataStream.class];
}

+ (NSValueTransformer *)privateJSONTransformer {
    return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{
                                                                           @"true"  : @1,
                                                                           @"false" : @0
                                                                           }];
}

我们使用-mappingDictionary来映射不同的属性名称。如Mantle框架中所述。

任何模型都应该表示一个-endpointURL方法,基本上是一个端点URL。

-...JSONTransformer方法提供了一个自定义的映射行为。例如数组、VCObjectSubclasses dates BOOL(如在-privateJSONTransformer中所示),等等。有关此主题的更多信息,请参阅Mantle框架。

尝试一下!

就是这样。VCObject将使用其力量向任何VCObject添加GET、POST、PUT和DELETE方法。它还将映射所有属性,包括嵌套属性。此外,它将上传所有提供的属性。

安装

假期通过CocoaPods提供。要安装它,只需将以下行添加到您的Podfile中

pod "Vacation"

作者

Igor Kovryzhkin,[email protected]

许可证

假期可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。