我有以下设计模式查询问题。我在PHP中有一个web服务,我想从中执行、登录授权和SQL操作,其中一些具有NSDictionary响应,有些具有BOOL响应。
我对设计模式进行了搜索,并点击了以下内容:Best architectural approaches for building iOS networking applications (REST clients)
虽然这篇文章很有趣,但我不认为我需要这么复杂的东西。我已经以assetDBConnection (在下面的代码中是self.delegate )的形式开始使用单例对象,但我不知道这是否是最好的主意。
我认为将assetDBConnection从APIWebRetrieve数据检索器中抽象出来的唯一方法是从响应中提取和比较字符串。这意味着将PHP级别的响应分组为类型,例如type=“登录”等。
-(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];
}
}
}
}任何帮助都很感激。
更新: Ok,这一定很无聊。没有回复。我已经开始在其中添加另一个层,称为服务。我非常喜欢这样的事实,我现在有这样的代码弹出:
#import "AssetDBConnection.h"
#import "AssetDBServiceLogon.h"
@implementation AssetDBConnection
-(BOOL)loginWithUsername:(NSString*)user andPassword:(NSString*)password
{
[AssetDBService logonWithUsername:user password:password andDelegate:self];
}我只希望这是朝着正确的方向!
发布于 2016-02-09 11:26:06
Tumble杂草!
因此,我想我最好还是发表我自己的答案。也就是我所做的事情的实施细节。
有一个APIWebRetrieve类,它为所有微服务提供POST web调用(?)我不太确定这是正确的术语)例如GetAssetDetails,MoveAsset,CreateFaultForAsset。POST调用具有一个操作类型e.g.=“GetAssetDetails”,并将一个JSON对象(转换为NSDictionary)返回给GetAssetDetails对象,然后该对象返回与原始调用类型具有相同名称的键的数据内容。然后将其返回给AssetDBConnection Singleton,然后将其传回单例DBConnection类的委托。
我试着画这个..。
CallingViewController
|
|
|
------------AssetDBConnection (Singleton)-------------
| | | | |
GetAssetDetail AssetFault OtherMS OtherMS OtherMS
Instance Instance Instance Instance Instance
| | | | |
APIWebretrieve APIWebretrieve APIWeb.... APIWeb... APIWeb...
Instance Instance Instance Instance Instance\#字符基本上表示顶级类是较低级别的委托。
这个实现的效果如何?(在回答一个问题时,我会被击落)
好吧,不管是什么答案,这是myAnswer。
干杯
https://stackoverflow.com/questions/34775090
复制相似问题