云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

轻量服务器_正义联盟百度云_免费

小七 141 0

轻量服务器_正义联盟百度云_免费

在SP08版本中,ODataSDK引入了基于块的完成处理程序API。新的API用于打开在线商店和调度执行请求。

在我们进入具体的API之前,让我们快速看看iOS中的块。简而言之,块是可以传递给方法的代码段,就像传递价值观。引用从https://developer.apple.com/library/ios/documentation/Cocoa/conceptional/ProgrammingWithObjectiveC/WorkingwithBlocks/WorkingwithBlocks.html:

"一个区块代表一个不同的工作单元,将可执行代码与从周围范围捕获的可选状态相结合。"

块最常见的用途之一是作为完成处理程序。如中所述https://developer.apple.com/library/ios/featuredarticles/Short\实用指南\u Blocks/,完成处理程序是回调,允许客户端在框架方法或函数完成其任务时执行某些操作任务。考虑一下需要在以后进行回调的函数。为了能够将块用作完成处理程序,必须将该块作为参数传递给函数,这样当它完成执行时,就可以简单地调用该块。块必须是函数的最后一个参数。

例如,下面是函数的声明:

–(void)someFunction:(int)paramOne and completion:(void(^)(NSString*blockParam))completionBlock;

下面是函数的实现:

-(void)someFunction:(int)paramOne and completion:(void(^)(NSString)*blockParam)completionBlock{

NSString*msg=@"使用块作为完成处理程序的示例。";

completionBlock(msg);

}

请考虑下面调用上述函数的代码:

[self som]功能:5和完成:^(NSString*blockParam){

//在这里定义块代码,因此只有在调用'someFunction'时,淘客公众号,定义了完成

//handler块。

NSString*finalString=[NSString stringWithFormat:@"%@Blocks make life easy.",blockParam];

NSLog(@"%@",finalString);

}];

打印出的最终字符串:

使用块作为完成处理程序的示例。积木让生活变得简单。

通过以上基础知识,让我们更仔细地看看商店开业时基于积木的API。打开存储的块API是:

-(void)openStore:(void(^)(idstore,NSError*error))completionBlock;

使用此API对openStore的调用如下:

SODataOnlineStore*onlineStore=[[SODataOnlineStore alloc]initWithURL:[NSURL URLWithString:self.endpointUrl]httpConversati公司onManager:self.logonHandler.httpConvManager];

[onlineStore openStore:^(idstore,NSError*error){

if(!错误)

{

[self getODataEntries];

}else{

NSLog(@"%@",错误。描述);

}

}];

如果存储是通过旧的基于委托的API打开的(如下所示),那么我们需要使用SODataOnlineStoreDelegates方法。正如您所看到的,人工智能核心,带有块的代码比使用委托的代码更简洁易读。

SODataOnlineStore*onlineStore=[[SODataOnlineStore alloc]initWithURL:[NSURL URLWithString:self.endpointUrl]httpConversati公司onManager:self.logonHandler.httpConvManager];

[在线存储设置在线存储电子公使:自我];

N错误*错误=零;

BOOL success=[onlineStore openStoreWithError:&error];

#pragma mark–SODataOnlineStoreDelegates

-(void)onlineStoreOpenFinished:(SODataOnlineStore*)store{

[self getODataEntries];

}

-(void)onlineStoreOpenFailed:(SODataOnlineStore*)store error:(NSError*)error{

NSLog(@"%@",错误。描述);

}

SDK还提供了基于完成块的网络请求API列表。(检查ODataOnlineStore.h头文件以获得完整列表)这些API特别消除了使用委托时需要的大量特定于应用程序的代码。例如,当我们使用SODataRequestDelegate方法时,在每个方法中,例如requestFinished:方法,行业云,不需要查询调用了哪种请求(创建、更新或删除)、查询的集合等。

下面是一个更新请求的示例,大数据怎么查询,带有完成处理程序块API和用于比较的委托API。基于块的代码比requestFinished:delegate方法简单得多,在继续处理结果之前,大数据的数据库,我们必须验证请求模式是否确实已更新。

基于块的更新请求:

[onlineStore scheduleUpd实体:实体选项:nil完成:^(idrequestExecution,N错误*错误){

如果(!错误)

NSLog(@"Update Successful");

}];

基于委托的更新请求:

[onlineStore scheduleUpd实体:实体委托:自我选项:无];

#pragma mark–SODataRequestDelegates

–(void)requestFinished:(id)requestExecution{

NSError*error=nil;

idrequestParam=requestExecution.request请求;

idrequest=(id)requestParam;

if([requestParam协议:@协议(SODataRequestParamSingle)])

{

如果(请求模式==SODataRequestModeUpdate)

{

如果(!错误)

NSLog(@"Update Successful");

}

}

基于上述示例,使用基于完成块的API有以下优点:

最后一点,但非常重要的一点-你可以选择在你的应用程序中使用委托或基于块的API,但不要混合使用这两种风格。

我希望这个博客提供了一个很好的介绍完成块的API,并帮助您利用它在您的下一个应用程序。

见你在下一个博客!