【发布时间】:2016-04-16 07:28:36
【问题描述】:
我正在构建一个向 API 发出请求的简单应用程序。没什么太复杂的。我只是想知道这是否是应用程序的良好设计模式。我正在做一些与我通常做的不同的事情,因为这种设计模式看起来更整洁。我知道对于什么是更好的设计模式有一些意见,但是在可接受和不可接受之间有一个明确的界限。这就是我想要找出的。
编辑:为了简化问题,对于向服务器发出 API 请求并在控制器之间传递对象的应用来说,这是一个好的设计模式吗?
查看控制器 1.m。
- (IBAction)login:(id)sender {
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setValue:self.usernameField.text forKey:@"username"];
[params setValue:self.passwordField.text forKey:@"password"];
[apiClient loginRequest:params onSuccess:^(User *userInfo) {
ViewController2 *viewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
viewController2.userInfo = userInfo;
[self.navigationController pushViewController:viewControllers animated:YES];
}onFailure:^(NSError* error) {
}];
}
APIClient.m
- (void)loginRequest:(NSMutableDictionary *)params
onSuccess:(void(^)(id response))successBlock
onFailure:(void (^)(NSError *))failureBlock
{
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[manager POST:[NSString stringWithFormat:@"%@/login", URL] parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
User *user = [[User alloc]init];
user.name = [responseObject objectForKey:@"name"];
successBlock(user);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
failureBlock(error);
}];
}
User.h(这是模型对象)
#import <Foundation/Foundation.h>
@interface User : NSObject
@property (nonatomic,copy) NSString *name;
// There is more properties, but I excluded them from this example
@end
【问题讨论】:
-
您的实际问题是什么?你问的代码呢?
-
对于向服务器发出 API 请求并在控制器之间传递对象的 App,这是一个好的架构设计吗?
-
你指的是什么架构设计?
-
哦,我可能使用了错误的术语。基本上,我使用 MVC 设计模式尝试向 API 发出请求,将请求中的响应对象存储在 User 模型中,并将其发送到我的控制器以在控制器中使用或传递给另一个控制器。
-
除了你有 3 节课之外,你什么都没告诉我们。我们不知道这些类是如何真正相互关联的,它们是如何创建的。实际上,我们只能说,以会话管理器的方式进行实例化看起来有点奇怪
标签: ios objective-c architecture