ACBestOfTheRest 0.2

ACBestOfTheRest 0.2

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

AppCraft LLC 维护。



  • AppCraft LLC

示例

要运行示例项目,克隆仓库,然后首先从 Example 目录运行 pod install

要求

AFNetworking 需要用于图像下载管理。

安装

ACBestOfTheRest 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行。

pod "ACBestOfTheRest"

使用

1. 指定 API 管理器类

ACBestOfTheRest 假设您很棒,并使用某种 API 管理器类来处理会话、自动重新登录等。以 AFNetworking 举例,API 管理器类可能看起来像这样

#import <Foundation/Foundation.h>
#import "BOTRCore.h"
#import "AFNetworking.h"

@interface ACApiManager : NSObject

+ (void)init;

@end

#import "ACApiManager.h"

static AFHTTPSessionManager *apiSessionManager = nil;
static NSString *apiURL;

@implementation ACApiManager

+ (void)initialize {

    apiURL = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"API URL"];
    NSAssert(apiURL, @"Please specify API URL key in your Info.plist");

    apiSessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:apiURL]];
    apiSessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
    apiSessionManager.responseSerializer = [AFJSONResponseSerializer serializer];
    apiSessionManager.responseSerializer.acceptableContentTypes = [apiSessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
    apiSessionManager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
    apiSessionManager.securityPolicy.allowInvalidCertificates = YES;
    apiSessionManager.securityPolicy.validatesDomainName = NO;
}

+ (void)init {}

+ (void)get:(NSString *)request parameters:(NSDictionary *)parameters completion:(requestCompletionBlock)completionBlock {
    [apiSessionManager GET:request parameters:parameters progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
        completionBlock(responseObject);
    } failure:^(NSURLSessionDataTask *task, NSError *error) {
        completionBlock(nil);
        NSLog(@"Error: %@", error);
    }];
}

@end

这个类设置了 AFHTTPSessionManager 的一些参数,如基本 URL、序列化器、SSL 规则等,并提供 REST 方法,这应该很聪明,例如,当会话令牌过期时,执行自动重新登录。

ACBestOfTheRest 使用这个类或单例实例通过 API 请求数据。因此首先您需要一些 API 管理器类,并在您的 .plist 文件中使用 API Manager Class 键指定它

Sample 1

请注意,在此示例中,公共 VK API https://api.vk.com/method 作为 API URL 键用于 API 管理器类。

API 管理器类或其共享实例应响应对 get:parameters:completion: 方法。ACBestOfTheRest 检查您指定的类是否响应该方法;如果没有,它试图通过调用 sharedInstance 方法来获取其共享实例;如果即使那个实例也没有响应该 get:parameters:completion: 方法,它也会抛出 NSAssert 异常。因此您应该在您的 API 管理器类直接或在其共享实例中实现该方法。

2. 使用 BOTRViewController

从 BOTRViewController 继承您的 ViewController 类

#import <UIKit/UIKit.h>
#import "BOTRViewController.h"

@interface ViewController : BOTRViewController

@end

在 ViewController.m 文件中,我们初始化 API 管理器类

#import "ViewController.h"
#import "ACApiManager.h"

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [ACApiManager init];
}

@end

3. 在 Storyboard 中进行一些操作

将 UITableView 拖到 ViewController 的视图中,将其类设置为 BOTRTableView,并将其添加到 tableViews 输出口集合中。

Sample 2

然后设置您的表格的Url 路径数据路径属性。

Sample 3

Url 路径将被传递到您的API管理器类中。数据路径是JSON响应中某个数组的路径。如果您的JSON响应仅包含一个数组,则保留此属性为空。如果您的JSON响应包含一个字典,其中包含具有所需数组的response字段,则将其值设置为response。您可以使用/字符来指定更复杂的路径。

然后在您的表格上放置UITableViewCell原型,将其重用标识符属性设置为BOTRCell

最后,在单元格中放置一些UILabel,将它们的类设置为BOTRLabel,并指定默认值属性,其中是JSON响应的一个字段。

4. 完成了

在此处运行项目并查看结果。

Sample 4

您可以添加其他标签并将它的值设置为显示JSON响应的其他字段,您还可以使用BOTRImageView显示图片。您可以传递数组的元素给详情控制器并执行之前(对于集合使用BOTRCollectionView)的所有操作,但代码会更少(甚至没有)。请浏览示例项目以了解如何使用转换器、在控制器间传递数据和其他操作。

作者

AppCraft LLC - 移动开发工作室(iOS及Android专长),[email protected]

许可证

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