Ios AFNetworking请求是否应放置在与视图控制器分离的NSObject中?
试图改进我的编码风格,我想知道什么是正确的处理方式。是否应该将它们放置在与视图控制器分开的NSObjects中,是否有任何开源的干净代码示例供我在线参考?如果您的应用程序将依赖于构造,那么创建一个模型总是一个好主意。也就是说,如果你正在构建一个包含tableview或完整照片的应用程序,最好为照片创建一个模型Ios AFNetworking请求是否应放置在与视图控制器分离的NSObject中?,ios,objective-c,model-view-controller,afnetworking,nsobject,Ios,Objective C,Model View Controller,Afnetworking,Nsobject,试图改进我的编码风格,我想知道什么是正确的处理方式。是否应该将它们放置在与视图控制器分开的NSObjects中,是否有任何开源的干净代码示例供我在线参考?如果您的应用程序将依赖于构造,那么创建一个模型总是一个好主意。也就是说,如果你正在构建一个包含tableview或完整照片的应用程序,最好为照片创建一个模型 以下是几个例子: 在本教程中,了解填充表格视图的最佳方法,以及模型、单元格和表格视图之间的关系如何工作 这是为tableview构建模型的端到端演练,然后填充tableview 全面了解
以下是几个例子: 在本教程中,了解填充表格视图的最佳方法,以及模型、单元格和表格视图之间的关系如何工作 这是为tableview构建模型的端到端演练,然后填充tableview 全面了解模型如何适应MVC模式
如果要从JSON响应中构造对象,请执行以下操作:
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:&error];
// Sanity check
if ([json isKindOfClass:[NSDictionary class]]){
NSArray *jsonArray = json[@"items"];
// Sanity check
if ([jsonArray isKindOfClass:[NSArray class]]){
// Here you go through all your items one by one
for (NSDictionary *dictionary in jsonArray) {
Model *staff = [[Staff alloc] init];
model.id = [dictionary objectForKey:@"id"];
model.name = [dictionary objectForKey:@"name"];
model.attribute = [dictionary objectForKey:@"attribute"];
// Do this for all your attributes
[arrayContainingObjects addObject:model];
}
}
}
如果你的应用程序将依赖于一个构造,那么创建一个模型总是一个好主意。也就是说,如果你正在构建一个包含tableview或完整照片的应用程序,最好为照片创建一个模型
以下是几个例子: 在本教程中,了解填充表格视图的最佳方法,以及模型、单元格和表格视图之间的关系如何工作 这是为tableview构建模型的端到端演练,然后填充tableview 全面了解模型如何适应MVC模式
如果要从JSON响应中构造对象,请执行以下操作:
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:&error];
// Sanity check
if ([json isKindOfClass:[NSDictionary class]]){
NSArray *jsonArray = json[@"items"];
// Sanity check
if ([jsonArray isKindOfClass:[NSArray class]]){
// Here you go through all your items one by one
for (NSDictionary *dictionary in jsonArray) {
Model *staff = [[Staff alloc] init];
model.id = [dictionary objectForKey:@"id"];
model.name = [dictionary objectForKey:@"name"];
model.attribute = [dictionary objectForKey:@"attribute"];
// Do this for all your attributes
[arrayContainingObjects addObject:model];
}
}
}
一般来说,最好将访问后端服务器的代码与UI组件分开。一个最好的理由是,通常需要多个UI组件访问相同的服务器调用 就示例而言,可能有数千个。但也许更好的办法是阅读设计模式和应用程序架构模式等内容
objc.io对这些主题有一些介绍。给你。还有很多其他的,只有谷歌搜索。一般来说,最好将访问后端服务器的代码与UI组件分开。一个最好的理由是,通常需要多个UI组件访问相同的服务器调用 就示例而言,可能有数千个。但也许更好的办法是阅读设计模式和应用程序架构模式等内容
objc.io对这些主题有一些介绍。给你。还有很多其他的,只有谷歌搜索。使用通用NSObject类通过AFNetworking 2.0调用WS 首先使用任意名称创建NSObject类我正在创建名为Webservice.h和Webservice.m Webservice.h
@interface Webservice : NSObject
+ (void)callWSWithUrl:(NSString *)stUrl parmeters:(NSDictionary *)parameters success:(void (^)(NSDictionary *response))success failure:(void (^)(NSError *error))failure;
@end
Webservice.m您的nsobject.m文件如下所示。(在.m文件中添加两个函数)
确保您必须用success和success替换字典密钥
处理Response回调函数的消息
这样使用从任何viewcontroller.m调用此常用方法,并从任何viewcontroller调用任何方法。对于临时,我使用viewDidLoad调用此WS
- (void)viewDidLoad {
[super viewDidLoad];
NSDictionary *dictParam = @{@"parameter1":@"value1",@"parameter1":@"value2"};
[WebClient requestWithUrlWithResultVerificationWithLoder:@"add your webservice URL here" parmeters:dictParam success:^(NSDictionary *response) {
//Success
NSLog(@"responce:%@",response);
//code here...
} failure:^(NSError *error) {
//Error
NSLog(@"error:%@",error.localizedDescription);
}];
}
在upper方法中添加您的参数、值和webservice URL。您可以轻松地使用这个nsobjset类。有关更多详细信息,请访问或。使用通用NSObject类通过AFNetworking 2.0调用WS 首先使用任意名称创建NSObject类我正在创建名为Webservice.h和Webservice.m Webservice.h
@interface Webservice : NSObject
+ (void)callWSWithUrl:(NSString *)stUrl parmeters:(NSDictionary *)parameters success:(void (^)(NSDictionary *response))success failure:(void (^)(NSError *error))failure;
@end
Webservice.m您的nsobject.m文件如下所示。(在.m文件中添加两个函数)
确保您必须用success和success替换字典密钥
处理Response回调函数的消息
这样使用从任何viewcontroller.m调用此常用方法,并从任何viewcontroller调用任何方法。对于临时,我使用viewDidLoad调用此WS
- (void)viewDidLoad {
[super viewDidLoad];
NSDictionary *dictParam = @{@"parameter1":@"value1",@"parameter1":@"value2"};
[WebClient requestWithUrlWithResultVerificationWithLoder:@"add your webservice URL here" parmeters:dictParam success:^(NSDictionary *response) {
//Success
NSLog(@"responce:%@",response);
//code here...
} failure:^(NSError *error) {
//Error
NSLog(@"error:%@",error.localizedDescription);
}];
}
在upper方法中添加您的参数、值和webservice URL。您可以轻松地使用这个nsobjset类。有关更多详细信息,请访问或。但为什么我从未在NSObjects中看到afnetworking请求的任何代码示例?答案将取决于您看到的示例,如果只是一个快速教程示例,那么它可能又快又脏,因此他们不需要演示如何使用模型(NSObject)。但为什么我从来没有在NSObject中看到任何afnetworking请求的代码示例?答案取决于您看到的示例,如果只是一个快速教程示例,那么它可能又快又脏,因此他们不需要显示如何使用模型(NSObject)。是的!。您使用的是哪种AFNetworking AFNetworking 2.0还是3.0?我有一些代码剪贴可以帮助您。我在哪里可以找到它们?我使用的是2.0 AFNetworking我会上传给我一些时间。是的!。您使用的是哪种AFNetworking?AFNetworking 2.0还是3.0?我有一些代码剪贴可以帮助您。我在哪里可以找到它们?我使用的是2.0 AFNetworking。我将上载给我一些时间。对于第一个函数,我得到一个未知的类方法,即使它在中声明。h@ChuckKelly请详细写下你的错误。请一个好的程序员从来不会写相同的代码x2,所以我不应该找到一种方法来保持发出请求的方法中包含的失败块,因为在发生错误时应该发生的事情是通用的。我为第一个函数得到一个未知的类方法,即使它在。h@ChuckKelly请把你的错误写在细节请一个好的程序员从来不会写相同的代码x2,所以我不应该找到一种保持f的方法吗