要运行示例项目,克隆仓库,然后首先从 Example 目录运行 pod install
。
AFNetworking 需要用于图像下载管理。
ACBestOfTheRest 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行。
pod "ACBestOfTheRest"
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
键指定它
请注意,在此示例中,公共 VK API https://api.vk.com/method
作为 API URL
键用于 API 管理器类。
API 管理器类或其共享实例应响应对 get:parameters:completion:
方法。ACBestOfTheRest 检查您指定的类是否响应该方法;如果没有,它试图通过调用 sharedInstance
方法来获取其共享实例;如果即使那个实例也没有响应该 get:parameters:completion:
方法,它也会抛出 NSAssert 异常。因此您应该在您的 API 管理器类直接或在其共享实例中实现该方法。
从 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
将 UITableView 拖到 ViewController 的视图中,将其类设置为 BOTRTableView,并将其添加到 tableViews
输出口集合中。
然后设置您的表格的Url 路径
和数据路径
属性。
Url 路径
将被传递到您的API管理器类中。数据路径
是JSON响应中某个数组的路径。如果您的JSON响应仅包含一个数组,则保留此属性为空。如果您的JSON响应包含一个字典,其中包含具有所需数组的response
字段,则将其值设置为response
。您可以使用/
字符来指定更复杂的路径。
然后在您的表格上放置UITableViewCell原型,将其重用标识符属性设置为BOTRCell
。
最后,在单元格中放置一些UILabel,将它们的类设置为BOTRLabel
,并指定键
和默认值
属性,其中键
是JSON响应的一个字段。
在此处运行项目并查看结果。
您可以添加其他标签并将它的键
值设置为显示JSON响应的其他字段,您还可以使用BOTRImageView显示图片。您可以传递数组的元素给详情控制器并执行之前(对于集合使用BOTRCollectionView)的所有操作,但代码会更少(甚至没有)。请浏览示例项目以了解如何使用转换器、在控制器间传递数据和其他操作。
AppCraft LLC - 移动开发工作室(iOS及Android专长),[email protected]。
ACBestOfTheRest可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。