2016-01-13 40 views
1

我有以下设计模式查询问题。我有一个PHP的Web服务,我想从中执行,登录授权和SQL操作,一些使用NSDictionary响应,一些使用BOOL响应。iOS网络API设计模式想法?

我有设计模式的搜索和打击这样的: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]; 
      } 
     } 
    } 
} 

任何帮助赞赏。

更新: 好吧,这一定很沉闷。没有任何反应。我已经开始在服务中添加另一个层。我很喜欢这样的事实,我现在有这样的代码弹出:

#import "AssetDBConnection.h" 
#import "AssetDBServiceLogon.h" 

@implementation AssetDBConnection 

-(BOOL)loginWithUsername:(NSString*)user andPassword:(NSString*)password 
{ 
    [AssetDBService logonWithUsername:user password:password andDelegate:self]; 
} 

我只是希望这是朝着正确的方向!

+0

** bold **我去的是一个APIWebRetrieve类,它执行Web调用并返回一个JSON对象给一个(微 –

回答

0

风滚草!

因此,为什么我尽管我可能会发布我自己的答案。即我所做的实施细节。

有一个APIWebRetrieve类,它为所有微服务(??我不太确定这是否是正确的术语)进行POST Web调用,例如GetAssetDetails,MoveAsset,CreateFaultForAsset。 POST调用具有操作类型,例如=“asset-details”,并将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。

欢呼声