139 lines
3.7 KiB
Objective-C
139 lines
3.7 KiB
Objective-C
//
|
|
// UMComDataController.h
|
|
// UMCommunity
|
|
//
|
|
// Created by umeng on 16/4/29.
|
|
// Copyright © 2016年 Umeng. All rights reserved.
|
|
//
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import <UMCommunitySDK/UMComDataRequestManager.h>
|
|
|
|
#define UMCom_Limit_Page_Count 20 //分页请求默认数据
|
|
|
|
@class UMComListDataController;
|
|
|
|
typedef void (^UMComDataListRequestCompletion)(NSArray *responseData,NSError *error);
|
|
typedef enum {
|
|
|
|
UMComObjectChangeType_update,
|
|
UMComObjectChangeType_insert,
|
|
UMComObjectChangeType_delete,
|
|
|
|
}UMComObjectChangeType;
|
|
|
|
|
|
@interface UMComListDataController : NSObject
|
|
|
|
/**
|
|
* 下一页请求的url(在请求任一页数据时会返回下一页请求的url,每个接口通过对应的下一页请求url请求下一页数据)
|
|
*/
|
|
@property (nonatomic, copy) NSString *nextPageUrl;
|
|
|
|
/**
|
|
*是否能查看下一页
|
|
*/
|
|
@property (nonatomic, assign) BOOL canVisitNextPage;
|
|
|
|
/**
|
|
*是否有下一页
|
|
*/
|
|
@property (nonatomic, assign) BOOL haveNextPage;
|
|
|
|
/**
|
|
*每次请求的个数(在请求第一页的时候有效,之后请求下一页的个数都以请求第一页的个数为准)
|
|
*/
|
|
@property (nonatomic, assign) NSInteger count;
|
|
|
|
/**
|
|
*数据列表(比如请求的是Feed列表, 那么dataArray中的元素就是UMComFeed类对象,以此类推)
|
|
*/
|
|
@property (nonatomic, strong) NSMutableArray *dataArray;
|
|
|
|
/**
|
|
* 下一页请求接口类型
|
|
*/
|
|
@property (nonatomic, assign) UMComPageRequestType pageRequestType;
|
|
|
|
/**
|
|
* 是否读本地数据 默认为NO,设置YES后,界面第一次进入会读入本地的数据,然后下拉刷新就直接读入网络的数据
|
|
*/
|
|
@property (nonatomic, assign) BOOL isReadLoacalData;
|
|
|
|
/**
|
|
* 是否保存本地数据,默认为NO,设置为YES后,每次下来就会保存下拉刷新的第一页的数据,用作缓存
|
|
*/
|
|
@property (nonatomic, assign) BOOL isSaveLoacalData;
|
|
|
|
/**
|
|
* ListData下feed下置顶的个数,用于在插入新feed的时候来判断插入到置顶feed下面而在普通feed前面
|
|
*/
|
|
@property (nonatomic, assign) NSInteger topItemsCount;
|
|
|
|
|
|
+ (UMComListDataController *)dataControllerWithCount:(NSInteger)count;
|
|
|
|
/**
|
|
* 初始化方法
|
|
* @param count 请求个数
|
|
*/
|
|
- (instancetype)initWithCount:(NSInteger)count;
|
|
|
|
/**
|
|
* 读取
|
|
*/
|
|
- (instancetype)initWithRequestType:(UMComPageRequestType)requestType count:(NSInteger)count;
|
|
|
|
/**
|
|
* 读取本地数据
|
|
*
|
|
* @param localfetchcompletion 本地数据回调
|
|
*/
|
|
-(void)fetchLocalDataWithCompletion:(UMComDataListRequestCompletion)localfetchcompletion;
|
|
|
|
/**
|
|
* 存储本地数据
|
|
*
|
|
*/
|
|
-(void)saveLocalDataWithDataArray:(NSArray*)dataArray;
|
|
|
|
/**
|
|
*请求第一页数据
|
|
*/
|
|
- (void)refreshNewDataCompletion:(UMComDataListRequestCompletion)completion;
|
|
|
|
/**
|
|
*请求下一页数据
|
|
*/
|
|
- (void)loadNextPageDataWithCompletion:(UMComDataListRequestCompletion)completion;
|
|
|
|
#pragma mark - DataHandleMethod
|
|
/**
|
|
* 处理本地数据
|
|
*
|
|
* @param data 本地读取的数据 是个数组
|
|
* @param error @see NSError
|
|
* @param completion 回调方法
|
|
*/
|
|
- (void)handleLocalData:(NSArray *)data error:(NSError *)error completion:(UMComDataListRequestCompletion)completion;
|
|
|
|
/**
|
|
* 处理第一页请求的数据
|
|
*
|
|
* @param data 第一页请求返回数据
|
|
* @param error @see NSError
|
|
* @param completion 回调方法
|
|
*/
|
|
- (void)handleNewData:(NSDictionary *)data error:(NSError *)error completion:(UMComDataListRequestCompletion)completion;
|
|
|
|
/**
|
|
* 处理下一页请求的数据
|
|
*
|
|
* @param data 下一页请求返回数据
|
|
* @param error @see NSError
|
|
* @param completion 回调方法
|
|
*/
|
|
- (void)handleNextPageData:(NSDictionary *)data error:(NSError *)error completion:(UMComDataListRequestCompletion)completion;
|
|
|
|
@end
|