【发布时间】:2016-04-18 22:09:27
【问题描述】:
我有以下设计模式查询问题。我有一个 PHP 网络服务,我想从中执行、登录授权和 SQL 操作,有些带有 NSDictionary 响应,有些带有 BOOL 响应。
我搜索了设计模式并点击了这个:Best architectural approaches for building iOS networking applications (REST clients)
虽然这篇文章很有趣,但我认为我不需要这么复杂的东西。我从一个作为assetDBConnection 的单例对象开始(在下面的代码中是self.delegate),但我不知道这是否是最好的主意。
我能想到从我的 APIWebRetrieve 数据检索器中抽象出我的assetDBConnection 的唯一方法是从响应中提取并比较字符串。这意味着将 PHP 服务级别的响应分组为类型,例如type="logon",等等等等。
-(void)APIWebRetrieveFinished:(APIWebRetrieve *)api
{
NSLog(@"api:%@",[api description]);
NSLog(@"%@",api.dataString);
NSError *error;
if (api.dataString) {
NSDictionary *results=[NSJSONSerialization JSONObjectWithData:[api.dataString dataUsingEncoding:NSStringEncodingConversionAllowLossy]
options:NSJSONReadingMutableContainers
error:&error];
if ([[results objectForKey:@"type"] isEqualToString:@"logon"]){
if ([results objectForKey:@"response"]){
[self.delegate loginOK];
}else{
[self.delegate loginFail];
}
}
}
}
任何帮助表示赞赏。
更新: 好吧,这一定很无聊。没有反应。我已经开始添加另一个层,称为服务。我非常喜欢我现在弹出这种代码的事实:
#import "AssetDBConnection.h"
#import "AssetDBServiceLogon.h"
@implementation AssetDBConnection
-(BOOL)loginWithUsername:(NSString*)user andPassword:(NSString*)password
{
[AssetDBService logonWithUsername:user password:password andDelegate:self];
}
我只希望这是朝着正确的方向发展!
【问题讨论】:
-
bold我选择的是一个 APIWebRetrieve 类,它执行 Web 调用并将 JSON 对象返回到 (micro
-
很遗憾您没有收到任何回复。我想知道答案!
标签: ios objective-c design-patterns networking nsurl