Concurrent networking in iOS5

本文详细介绍了如何在iOS中使用NSURLConnection类发送异步HTTP请求,包括创建请求、设置队列、处理响应和数据的方法,以及如何利用NSManagedObjectContext进行数据操作。

NSURLConnection

NSURLRequest

NSURLResponse

require a lot of boilterplate code

in iOS5,

+(void)sendAsynchronousRequest:(NSURLRequest*)requestqueue:(NSOperationQueue*)queuecompletionHandler:(void(^)(NSURLResponse*,NSData*,NSError*))handler;

so,

//Create the request
NSURL*url=[NSURLURLWithString:@"https://the.api.com/method/"];
NSMutableURLRequest*request=[NSMutableURLRequestrequestWithURL:url];

//Create the queue
NSOperationQueue*queue=[[NSOperationQueuealloc]init];
queue.name=@"com.your.unique.queue.name";

[NSURLConnectionsendAsynchronousRequest:requestqueue:queuecompletionHandler:^(NSURLResponse*response,NSData*data,NSError*error){
//If there was an error getting the data
if(error){
dispatch_async(dispatch_get_main_queue(),^(void){
//Display error message in UI
});
return;
}
//Do stuff with the data
dispatch_async(dispatch_get_main_queue(),^(void){
//UpdateUI
});
}];

NSManagedObjectContext

-(id)initWithConcurrencyType:(NSManagedObjectContextConcurrencyType)ct;
-(void)setParentContext:(NSManagedObjectContext*)parent;
-(void)performBlock:(void(^)())block;

SeyoumaicontextexecutoMaiQueu(NSMainQueueConcurrencyType)

CreataimporcontexantelCorDattcreatnequeufoi(NSPrivateQueueConcurrencyType)

SethmaicontexathimporcontextparenContext

OthimporcontextcalperforBlocandthimpor(i.e.dowloadatavalidatitimporitpurgoldatetc

SavchangeothimporcontextThiwilstagiuonleve(tthmaicontex)

SavchangeothmaicontextThiwilpersisiothassociatepersistenstor(anupdatNSFetchedResultControlleretc)

//Set up the main context(probably in the AppDelegate)

[[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];

 

NSManagedObjectContext *importContext=[[NSManagedObjectContextalloc]initWithConcurrencyType:NSPrivateQueueConcurrencyType];
importContext.parentContext=self.managedObjectContext;

[importContext performBlock:^{
//Download data,import etc..
NSError* importError=nil;
[importContext save:&importError];

[importContext.parentContext performBlock:^{
    NSError*parentError=nil;
    [importContext.parentContext save:&parentError];
}];
}];

 

转载于:https://www.cnblogs.com/grep/archive/2012/05/26/2519562.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值