Ios AFN网络:重用方法
我们知道我们可以从普通方法中获取返回值,例如:Ios AFN网络:重用方法,ios,objective-c,afnetworking,Ios,Objective C,Afnetworking,我们知道我们可以从普通方法中获取返回值,例如: -(NSString*)ASimpleFunction:(NSString*)str{ return str; } 调用此:[self-ASimpleFunction:@“abc”]将返回“abc” 如果我在singleton类中声明了它,那么我可以在任何地方使用它,比如: +(NSString*)ASimpleFunction:(NSString*)str{ return str; } 调用它:[Singleton ASimp
-(NSString*)ASimpleFunction:(NSString*)str{
return str;
}
调用此:[self-ASimpleFunction:@“abc”]
将返回“abc”
如果我在singleton类中声明了它,那么我可以在任何地方使用它,比如:
+(NSString*)ASimpleFunction:(NSString*)str{
return str;
}
调用它:[Singleton ASimpleFunction:@“xyz”]
将返回“xyz”
因此,在Singleton类中声明的上述方法可以通过类名本身从任何地方访问/重新使用,即Singleton
类似地,我想重用AFNetworking方法,我将传递参数的NSDictionary
,传递URL的NSString
,但问题是AFNetworking的成功和失败
块不会返回值。因此,我无法在成功时获取reponseObject
,而在失败时获取error
我是否正确地编写了相同的代码,即url、参数、[success..]/[failure..]为每个网络请求再次阻塞
或者是否有一个好的建议架构可用
p.S-我在谷歌上搜索了很多,但什么也没找到。以下是如何创建自己的助手类并在任何地方使用 首先,让我们创建一个方法来调用
AFNetworking
response,success和failure:
+(void)getWebserviceWithURL:(NSString*)strUrl withParam:(NSDictionary*)dictParam withCompletion:(void(^)(NSDictionary*response))completion withFailure:(void(^)(NSDictionary*response))failure withLoadingText:(NSString*)text
{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
manager.responseSerializer = responseSerializer;
[manager GET:strUrl parameters:dictParam success:^(AFHTTPRequestOperation *operation, id responseObject) {
// [[Helper sharedInstance] dismissProgressBar];
completion(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
failure([NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:error, operation, nil] forKeys:[NSArray arrayWithObjects:@"error",@"operation", nil]]);
// [[Helper sharedInstance] dismissProgressBar];
}];
}
现在,您可以创建自己的方法,并使用完成块获得响应、成功和失败:
- (void)WebSeries:(void(^)(bool status, NSMutableArray *seriesResponseData, NSString *compMessage))completion
{
//NSDictionary *dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"data", nil] forKeys:[NSArray arrayWithObjects:@"iComicBookId", nil]];
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"1" forKey:@"fk_iWebSeriesId"];
[Helper postWebserviceWithURL:EPISODESURL withParam:dict withCompletion:^(NSDictionary *response) {
NSLog(@"%@",response);
NSMutableArray *webSeriesData = response[@"data"];
completion(YES, webSeriesData, response[@"msg"]);
} withFailure:^(NSDictionary *response) {
} withLoadingText:@"Loading"];
}
希望这有帮助 您必须为它创建自己的帮助器类。你的学习对你将来会有帮助。尝试搜索有关如何从块中获取数据。。。这更像是一个设计问题。您可以创建自己的BaseConnection类,该类将使用AFNetworking。然后创建所形成类的子类,并使用方法创建一个请求,并从中获得一个完成块。@AshishKakkad-马上。我需要学习助手和积木。下面的几个答案,将尝试它们。谢谢