- API
- 類方法 封裝
- JSON 數(shù)據(jù)轉(zhuǎn)換
- 數(shù)據(jù)庫 緩存 (根據(jù)需要寫)
問題來了 怎么使用呢餐屎?見最下面 (實(shí)例化方法中 調(diào)用即可)
類方法
+ (void)requestWihtMethodUrl:(NSString *)url
params:(NSDictionary *)params
success:(void (^)(id response))success
failure:(void (^)(NSError *err))failure {
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer.timeoutInterval = kTimeOutInterval;
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//設(shè)置相應(yīng)內(nèi)容類
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",
@"text/html",
@"image/jpeg",
@"image/png",
@"application/octet-stream",
@"text/json",
@"text/plain",
nil];
[manager POST:url parameters:params progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (success) {
success(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failure) {
failure(error);
}
}];
}
JSON
- (NSDictionary *)jsonToDictionary:(id)json {
NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:json
options:NSJSONReadingMutableContainers
error:nil];
return [resultDic valueForKey:@"serverResponse"] ? : [resultDic valueForKey:@"alibaba_aliqin_fc_sms_num_send_response"];
}
FMDB
//緩存數(shù)據(jù)到sqlite數(shù)據(jù)庫
- (void)cacheDataToSqite:(id)data type:(NSString *)type {
NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
MYIDatabase *db = [MYIDatabase sharedBatabase];
[db creationSqlite];
[db deleteDataType:type];
[db insertType:type data:dataString];
}
//從sqlite中讀取數(shù)據(jù)
- (void)readDataForSqlite:(NSString *)type result:(void (^)(NSData *result))result {
[[MYIDatabase sharedBatabase] creationSqlite];
[[MYIDatabase sharedBatabase] dataType:type result:^(NSString *data) {
if (result) {
result([data dataUsingEncoding:NSUTF8StringEncoding]);
}
}];
}
方法 調(diào)用
- (void)requestHomeCenterPlateData:(void (^)(id response))success
failure:(void (^)(NSError *err))failure {
//獲取網(wǎng)絡(luò)數(shù)據(jù)
[MYIHomeDataAFHttpTool requestWihtMethodUrl:kMYI_HEADCENTERPLATEDATA_API_HOST
params:nil
success:^(id response) {
//向本地?cái)?shù)據(jù)庫寫入數(shù)據(jù)
[self cacheDataToSqite:response type:@"goodsCategorical"];
if (success) {
success([self jsonToDictionary:response]);
}
return;
} failure:^(NSError *err) {
//網(wǎng)絡(luò)數(shù)據(jù)獲取失敗锣杂,從本地?cái)?shù)據(jù)庫取出數(shù)據(jù)
[self readDataForSqlite:@"goodsCategorical" result:^(NSData *result) {
if (result) {
if (success) {
success([self jsonToDictionary:result]);
}
}
}];
}];
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者