Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AFN网络:重用方法_Ios_Objective C_Afnetworking - Fatal编程技术网

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-马上。我需要学习助手和积木。下面的几个答案,将尝试它们。谢谢