gpt4 book ai didi

iOS Networking API 设计模式思路?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:08:52 27 4
gpt4 key购买 nike

我有以下设计模式查询问题。我有一个 PHP 网络服务,我想从中执行、登录授权和 SQL 操作,一些带有 NSDictionary 响应,一些带有 BOOL 响应。

我搜索了设计模式并点击了:Best architectural approaches for building iOS networking applications (REST clients)

虽然这篇文章很有趣,但我认为我不需要那么复杂的东西。我已经开始使用单例对象作为 assetDBConnection(在下面的代码中是 self.delegate),但我不知道这是否是最好的主意。

我能想到的让我的 assetDBConnection 从我的 APIWebRetrieve 数据检索器中抽象出来的唯一方法是从响应中提取和比较字符串。这意味着将 PHP 服务级别的响应分组为类型,例如type="logon",etc,etc.

-(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];
}

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

最佳答案

风滚草!

因此,为什么我也可以发布自己的答案。即我所做的实现细节。

有一个 APIWebRetrieve 类,它为所有微服务执行 POST 网络调用(??我不太确定这是正确的术语)例如GetAssetDetails、MoveAsset、CreateFaultForAsset。 POST 调用有一个操作类型,例如 ="asset-details",并返回一个 JSON 对象(转换为 NSDictionary)给 GetAssetDetails 对象,然后返回与原始调用类型同名的键的数据内容。然后我将其返回给 AssetDBConnection 单例,然后将其传递回单例 DBConnection 类的委托(delegate)。

我会试着画这个...

                     CallingViewController
|
|
|
------------AssetDBConnection (Singleton)-------------
| | | | |
GetAssetDetail AssetFault OtherMS OtherMS OtherMS
Instance Instance Instance Instance Instance
| | | | |
APIWebretrieve APIWebretrieve APIWeb.... APIWeb... APIWeb...
Instance Instance Instance Instance Instance

|角色几乎代表了上层类(Class),是下层类(Class)的代表。

这个实现看起来如何? (糟糕的问题在答案中,我会被击落)

不管是不是答案,这都是我的答案。

干杯

关于iOS Networking API 设计模式思路?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34775090/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com